2009-07-28 7 views
2

J'ai un asp: GridView et là j'ai deux colonnes, dans une colonne je veux afficher l'étiquette mais quand je clique sur un bouton sdit je veux montrer une liste déroulante dans ce colonne particulière, i ont créé la vue de la grille comme suit:propriété EditTemplate de contrôle GridView

<bw:GridView ID="grdProducts" AllowPaging="True" PageSize="5" AllowSorting="True" 
    CssClass="DGTable" runat="server" AutoGenerateColumns="False" DataKeyNames="LinkedProductCode" 
    RowSelectingEnabled="True" RowStyle-CssClass="DGItem" SelectedRowStyle-CssClass="DGSelectedItem" 
    FooterStyle-CssClass="DGFooterTR" EditRowStyle-CssClass="DGEditItemValidator" > 
    <Columns> 
    <asp:BoundField DataField="LinkedProductCode" HeaderText="Product Code" ReadOnly="true" meta:resourcekey="BoundFieldResource4" />           
    <asp:TemplateField HeaderText="Product Type" ItemStyle-VerticalAlign="Top"> 
    <ItemTemplate> 
    <asp:Label ID="lbl1" runat="server" Text='<%# Bind("LinkedProductType")%>' /> 
    </ItemTemplate> 
    <EditItemTemplate > 
     <asp:DropDownList ID="linkedproductList" runat="server" DataSourceID="list"> 
     </asp:DropDownList> 
    </EditItemTemplate> 
    </asp:TemplateField>           
    </Columns> 
    <SelectedRowStyle CssClass="DGSelectedItem" /> 
    <PagerStyle CssClass="DGPagerTR" /> 
    <HeaderStyle CssClass="DGHeaderTR" /> 
</bw:GridView> 

que dois-je faire pour le faire? Que dois-je écrire dans l'événement click du bouton d'édition? S'il vous plaît aider ..

Répondre

3

Cela dépend de comment vous configurez le bouton Modifier. Si vous avez

<asp:Button ID="btnEdit" CommandName="Edit" runat="server" Text="Edit" /> 

dans un <ItemTemplate> dans le GridView, le Gridview passe automatiquement en mode d'édition lorsque le bouton Edit est cliqué. Le CommandName Edit est un CommandName spécial pour mettre un GridView en mode édition.

Si vous souhaitez implémenter un comportement spécifique en mode édition, cela peut être réalisé en configurant un gestionnaire d'événement OnRowEditing et en implémentant votre logique ici. Cela ressemblerait à quelque chose comme ça

protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) 
{ 
    // Set editing on the row that raised the event 
    GridView1.EditIndex = e.NewEditIndex; 

    /* Insert specific editing logic here */ 

    GridView1.DataBind(); 
} 
+1

+1 pour présenter la syntaxe, mais une légère correction: Le gestionnaire d'événement OnRowEditing n'est pas requis pour ce comportement. C'est seulement nécessaire si vous avez l'intention de modifier le comportement d'édition (comme dans le cas d'annuler une modification). – Cerebrus

+0

@Cerebrus - Merci, je viens de réaliser que je peux confondre l'OP en incluant comme je l'ai fait. Va modifier maintenant pour clarifier. –

+0

Désolé, j'ai dc ... faut donner +1! ;-) – Cerebrus

3

Il vous suffit de créer un ButtonField avec Commandname réglé sur « Modifier » (Vous pouvez également définir la propriété AutoGenerateEditButton du GridView True).

Le GridView prend en charge les commandes préconfigurées pour les champs qui spécifient un ensemble spécifique de CommandNames (tels que "Edit", "Delete", "Cancel").

Lorsque vous cliquez sur ce bouton, votre GridView passera en mode "Edit" et le EditItemTemplate sera automatiquement affiché.

Questions connexes