试图在Asp.net中的GridView中填充DropDown

时间:2017-05-24 12:42:21

标签: c# asp.net

我试图填写ComboBox

上的GridView

像这样的东西

enter image description here

显示某事的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));

    }
}

当我试图访问该页面时,崩溃并告诉我这个:

  

对象引用未设置为对象的实例。

错误针点:

enter image description here

这是我在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>

1 个答案:

答案 0 :(得分:2)

Gv_tool(下拉列表)位于EditItemTemplate中。所以你需要在行编辑时绑定它。

更改

if (e.Row.RowType == DataControlRowType.DataRow)

if (e.Row.RowType == DataControlRowType.DataRow && e.Row.RowIndex == GridView1.EditIndex)