在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();
    }
}

在gridview的编辑模式下拉列表

你必须找到标签从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。