我试图填写ComboBox
GridView
像这样的东西
显示某事的DropDown
是因为我手动填写。
这是我尝试填充DropDown
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
DropDownList Gv_tool = (e.Row.FindControl("Gv_tool") as DropDownList);
DataTable rdvt = RESBTable.regconnect();
this.Dpo_tool.DataSource = rdvt;
Gv_tool.DataSource = rdvt;
Gv_tool.DataTextField = "tool_id";
Gv_tool.DataValueField = "tool_id";
Gv_tool.DataBind();
Gv_tool.Items.Insert(0, new ListItem("Herramienta", String.Empty));
}
}
当我试图访问该页面时,崩溃并告诉我这个:
对象引用未设置为对象的实例。
错误针点:
这是我在HTML上的TemplateField:
<asp:TemplateField HeaderText="Tool">
<EditItemTemplate>
<asp:DropDownList ID="Gv_tool" runat="server">
</asp:DropDownList>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label2" runat="server" Text='<%# Bind("tool_id") %>'></asp:Label>
</ItemTemplate>
<ControlStyle Width="100px" />
<HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" />
</asp:TemplateField>
答案 0 :(得分:2)
Gv_tool(下拉列表)位于EditItemTemplate中。所以你需要在行编辑时绑定它。
更改
if (e.Row.RowType == DataControlRowType.DataRow)
到
if (e.Row.RowType == DataControlRowType.DataRow && e.Row.RowIndex == GridView1.EditIndex)