【发布时间】:2012-08-28 03:45:31
【问题描述】:
我无法绑定 edititem 模板中的下拉列表。当我尝试访问它时,我得到空引用。
我的设计:
<asp:TemplateField HeaderText ="Category">
<ItemTemplate >
<asp:Label ID="drpcategory" Text ='<%#Bind("category") %>' runat ="server" />
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="drpcategory1" AppendDataBoundItems="True" runat="server" >
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>
我的代码在后面:
protected void gv_RowEditing(object sender, GridViewEditEventArgs e)
{
gv_table1.EditIndex = e.NewEditIndex;
DropDownList drpcategory1 = ((DropDownList)gv_table1.Rows[e.NewEditIndex].Cells[8].FindControl("drpcategory1"));
//BindDropDown(drpcategory1);
dt = con.GetData("Select category_name from category");
String str = gv_table1.Rows[e.NewEditIndex].FindControl("drpcategory1").GetType().ToString();
//((DropDownList)gv_table1.Rows[e.NewEditIndex].Cells[8].FindControl("drpcategory1")).DataSource = dt;
drpcategory1.DataSource = dt;
drpcategory1.DataTextField = "category_name";
drpcategory1.DataValueField = "category_name";
drpcategory1.DataBind();
this.setgrid();
}
我已经尝试在网上查找并尝试了很多东西都徒劳无功。我是asp新手。提前致谢。我希望仅在用户进入编辑模式时绑定下拉菜单。
【问题讨论】:
-
什么是 gv_table1 ?我认为这可能是问题所在。请检查
-
不要使用
Cells[8].FindControl("drpcategory1")但row.FindControl("drpcategory1")因为NamingContainer是行而不是单元格。你的方式更容易出错。 -
我只使用 row.findcontrol。我也使用了单元格。我都尝试了但没有得到想要的结果。
-
VeeKeyBee 那是我的 gridview id man。
-
@TimSchmelter
row.FindControljust doesn't work for me... no matter what I tried.