0

我在 GridView 中有一个带有 GridView 和一些控件的 Web 表单。我在 gridview 的 EdtItemTemplate 中有一个 DropDownList。

我需要将此 DropDownList 与我的 CodeBehind 文件中的某个方法绑定,该方法返回一个 LisItems 类型的数组。

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

无论如何我可以使用 <%# Bind("MyMethodName") %> 来绑定控件吗?

4

3 回答 3

0

试试这个

在 App_Code 中创建一个数据类,像这样

public static class Fruits
{
    public static List<string> GetFruits()
    {
        return new string[] { "Apple", "Mango", "Banana", "Grapes" }.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" />

希望这会有所帮助。

于 2012-10-25T08:10:57.420 回答
0

试试这个

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();
    }
}
于 2012-10-25T08:23:43.187 回答
0

gridview rowdatabound 将用于将数据绑定到 gridview 中的下拉列表。

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

于 2012-11-09T12:00:45.393 回答