2016-07-28 7 views
1

Я бы хотел, чтобы DropDownList был отключен и включил его только после того, как я нажму ссылку редактирования на Gridview. На данный момент он показывает, что DropDownList отключается до и после ссылки редактирования.
коды:
Gridview Itemtemplate DropDownList Enabled

<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

является то, что RowEditing событие стрельбы, и если да, то, что происходит с DDL, когда вы поставите точку останова на строке, где» Повторить попытку включения контроля? –

+0

Да, событие RowEditing работает. DDL выделен синим цветом. –

ответ

4

При вызове bind в конце обработчика RowEditing событий, то GridView очищается и пополняется, и новый DropDownList создается в каждый ряд. Контроль должен быть включен после того, как данные связаны, например, в обработчике 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

Как это проверить на состояние, при котором происходит ссылка на ссылку «Редактировать»? –

+0

@devlincarnate - Он проверяет, является ли строка отредактированной, с помощью «EditIndex». – ConnorsFan

+0

И можете ли вы объяснить, почему код OP не работает? –