将数据绑定到GridView asp.net中的DropDownList

将数据绑定到GridView asp.net中的DropDownList,asp.net,Asp.net,我有一个带有GridView的web表单,GridView中有几个控件。我在gridview的EdtItemTemplate中有一个DropDownList 我需要在我的代码隐藏文件中使用某种方法绑定这个DropDownList,该方法返回一个LisItems类型的数组 我面临的问题是这个。由于控件位于EditItemTemplate中,因此在任何GridView事件中使用FindControl(“MyControlID”)似乎都不起作用,它返回null,换句话说,它似乎找不到控件,除非我使用O

我有一个带有GridView的web表单,GridView中有几个控件。我在gridview的EdtItemTemplate中有一个DropDownList

我需要在我的代码隐藏文件中使用某种方法绑定这个DropDownList,该方法返回一个LisItems类型的数组

我面临的问题是这个。由于控件位于EditItemTemplate中,因此在任何GridView事件中使用FindControl(“MyControlID”)似乎都不起作用,它返回null,换句话说,它似乎找不到控件,除非我使用OnRowUpdate事件,但我不能使用此事件,因为在此之前需要对控件进行数据绑定

还有其他方法可以使用绑定控件吗?

试试这个

protected void RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowState == DataControlRowState.Edit)
    {
        DropDownList dl = (DropDownList)e.Row.FindControl("myList");
        dl.DataSource = new string[] { "A", "B" };
        dl.DataBind();
    }
}
在App_代码中创建一个数据类,如下所示

public static class Fruits
{
    public static List<string> GetFruits()
    {
        return new string[] { "Apple", "Mango", "Banana", "Grapes" }.ToList();
    }
}
公共静态类
{
公共静态列表GetFruits()
{
返回新字符串[]{“苹果”、“芒果”、“香蕉”、“葡萄”}.ToList();
}
}
在页面中添加一个网格,我想你们都准备好了

<asp:GridView runat="server" ID="grid" AutoGenerateColumns="false" OnRowEditing="grid_RowEditing">
        <Columns>
            <asp:TemplateField HeaderText="Selected Fruit">
                <ItemTemplate>
                    <asp:Label runat="server" ID="Fruit" Text='<%# Eval("Fruits") %>' />
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:DropDownList runat="server" ID="fruits" DataSourceID="fruitsDS" />
                </EditItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Edit">
                <ItemTemplate>
                    <asp:Button runat="server" ID="btnEdit" Text="Edit" CommandName="Edit" />
            </ItemTemplate>
      </asp:TemplateField>
    </Columns>
</asp:GridView>

并添加一个对象数据源来绑定编辑模板的下拉列表

<asp:ObjectDataSource ID="fruitsDS" runat="server" SelectMethod="GetFruits" TypeName="Fruits" />

希望这能有所帮助。

试试这个

protected void RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowState == DataControlRowState.Edit)
    {
        DropDownList dl = (DropDownList)e.Row.FindControl("myList");
        dl.DataSource = new string[] { "A", "B" };
        dl.DataBind();
    }
}

gridview行数据绑定将用于

DropDownList ddl=(DropDownList)e.Row.FindControl(“ddlcity”);
ddl.DataSource=s

您尝试过itemdatabound事件吗?嗨,不,我没有。将尝试快速我似乎无法在GridView中找到此事件实际上它只是数据绑定或行数据绑定。