在gridview的编辑模式下拉列表
本文关键字:模式 下拉列表 编辑 gridview | 更新日期: 2023-09-27 18:02:38
在我的c#应用程序中,当我在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>
但是当我从模板中按下'Edit'按钮并输入'RowUpdating'事件时,从下拉列表中选择的值每次都是该下拉列表中的第一个值。
我需要在下拉列表中选择值,这是在标签性别中显示的值。
有人有什么想法吗?
我尝试了许多方法来设置'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();
}
}
你必须找到标签从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));
}
}
}
我知道这是一个很晚的回答,但它可以帮助op。