2015-07-14 3 views
1

В моем приложении в C#, когда я редактирую строку в gridview, я выбираю некоторые новые данные из выпадающего списка.Dropdownlist в режиме редактирования gridview

Я наполнение выпадающего списка, как это:

<asp:TemplateField HeaderText="Gender"> 
    <ItemTemplate> 
     <asp:Label ID="gender" runat="server" Text='<%# Eval("gender").ToString() %>'></asp:Label> 
    </ItemTemplate> 
    <EditItemTemplate> 
     <asp:DropDownList ID="DDL_genderList" runat="server"> 
      <asp:ListItem Value="" Text="---"></asp:ListItem> 
      <asp:ListItem Value="M" Text="M"> </asp:ListItem> 
      <asp:ListItem Value="F" Text="F"> </asp:ListItem> 
     </asp:DropDownList> 
    </EditItemTemplate> 
</asp:TemplateField> 

Но когда я нажимаю на кнопку «Изменить» из шаблона и входит в событии «RowUpdating», выбранное значение из DropDownList является каждый раз, первое значение из этого раскрывающегося списка.

Мне нужно выбранное значение в выпадающем списке, это значение, которое отображается в поле Ярлык.

У кого-нибудь есть идеи?

Я пробовал много способов установить выбранное значение в событии «RowDataBound», но не повезло.

Я попытался это:

protected void gvProducts_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    DataRowView dRowView = (DataRowView)e.Row.DataItem; 

    if ((e.Row.RowState & DataControlRowState.Edit) > 0) 
    { 
     DropDownList genderList = (DropDownList)e.Row.FindControl("DDL_genderList"); 
     genderList.SelectedValue = dRowView[1].ToString(); 
    } 
} 
+0

use user202

+0

спасибо, но за закрытый вопрос? –

ответ

0

Вы должны найти ярлык от TemplateField (DataRow) и DropDownList из EditTemplate (EditRowState), как, как:

protected void gvProducts_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     // find gender from label which is inside ItemTemplate 
     string lblgender = ((Label)e.Row.FindControl("gender")).Text; 

     if ((e.Row.RowState & DataControlRowState.Edit) > 0) 
     { 
      // find gender list from dropdownlist which is inside EditTemplate 
      DropDownList genderList = (DropDownList)e.Row.FindControl("DDL_genderList"); 
      genderList.SelectedIndex = 
       genderList.Items.IndexOf(genderList.Items.FindByValue(lblgender)); 
     } 
    } 
} 

Я знаю, что это очень поздно ответ, но он может помочь ОП.

Смежные вопросы