2016-07-28 1 views
1

Je souhaite que le DropDownList soit désactivé et ne l'active qu'après avoir cliqué sur le lien d'édition sur Gridview. À partir de maintenant, il montre le DropDownList être désactivé avant et après le lien d'édition.
codes:
Gridview Itemtemplate DropDownList Activé

<asp:DropDownList ID="DropDownList1" runat="server" Height="30px" Width="190px" SelectedValue='<%# Eval("FAQGroup") %>' Enabled="false" > 
    <asp:ListItem Value="Most asked FAQ"></asp:ListItem> 
    <asp:ListItem Value="Normal FAQ"></asp:ListItem> 
</asp:DropDownList> 

aspx.cs

protected void gvFAQ_RowEditing(object sender, GridViewEditEventArgs e) 
    { 
     gvFAQ.Columns[3].Visible = true; 

     DropDownList DDL= (DropDownList)gvFAQ.Rows[e.NewEditIndex].FindControl("DropDownList1"); 
     DDL.Enabled = true; 

     gvFAQ.EditIndex = e.NewEditIndex; 
     bind(); 
    } 
+0

Est-ce que le tir événement RowEditing, et si oui, ce qui se passe avec DDL quand vous mettez un point d'arrêt sur la ligne où vous Vous essayez d'activer le contrôle? –

+0

Oui, l'événement RowEditing fonctionne. DDL en surbrillance est en bleu. –

Répondre

4

Lorsque vous appelez bind à la fin du gestionnaire d'événements RowEditing, le GridView est effacé et rechargées, et est créé une nouvelle DropDownList dans chaque rangée. Le contrôle doit être activé après que les données est liée, par exemple dans le gestionnaire d'événements RowDataBound:

protected void gvFAQ_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     DropDownList ddl = e.Row.FindControl("DropDownList1") as DropDownList; 
     ddl.Enabled = e.Row.RowIndex == gvFAQ.EditIndex; 
    } 
} 
+0

Comment cela vérifie-t-il la condition où l'utilisateur clique sur le lien Modifier? –

+0

@devlincarnate - Il vérifie si la ligne est celle éditée, avec le 'EditIndex'. – ConnorsFan

+0

Et pouvez-vous expliquer pourquoi le code OP ne fonctionne pas? –