对象引用未设置为Gridview上对象的实例 - 用于搜索列值

时间:2014-11-29 11:02:17

标签: c# asp.net gridview

我有一个gridview,在每个列上我希望Search实现。我已经在其他aspx页面中实现了代码,它工作正常。但是当我在这里实现时,页面给出了错误,因为对象引用没有设置为对象的实例。请参阅GridView的RowDataBound代码。

<asp:GridView ID="grdPostData" runat="server" Width="100%" border="1" Style="border: 1px solid #E5E5E5;" CellPadding="3" AutoGenerateColumns="False" AllowPaging="true" PageSize="10" CssClass="hoverTable" OnPageIndexChanging="grdPostData_PageIndexChanging" OnRowDataBound="grdPostData_RowDataBound">
                <AlternatingRowStyle BackColor="#CCCCCC" />
                <Columns>
                    <asp:BoundField DataField="cat_id" HeaderText="Title" ItemStyle-Width="50" ControlStyle-CssClass="k-grid td" Visible="false" />
                    <asp:BoundField DataField="ngo_id" HeaderText="Title" ItemStyle-Width="50" ControlStyle-CssClass="k-grid td" Visible="false" />
                    <asp:BoundField DataField="title" HeaderText="Title" ItemStyle-Width="50" ControlStyle-CssClass="k-grid td" />
                    <asp:BoundField DataField="description" HeaderText="Description" ItemStyle-Width="50" ControlStyle-CssClass="k-grid td" />
                    <asp:TemplateField HeaderText="Post Category" ItemStyle-Width="50">
                        <ItemTemplate>
                            <asp:DropDownList ID="ddlPostCategory" AppendDataBoundItems="true" runat="server"
                                AutoPostBack="True">
                                <asp:ListItem Text="Select" Value="0"></asp:ListItem>
                            </asp:DropDownList>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:BoundField DataField="active" HeaderText="Active" ItemStyle-Width="30" ControlStyle-CssClass="k-grid td" />
                </Columns>
            </asp:GridView>

另见CS代码: -

 protected void grdPostData_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        GridViewRow row = new GridViewRow(0, 0, DataControlRowType.Header, DataControlRowState.Normal);
        for (int i = 0; i < grdPostData.Columns.Count; i++)
        {
            TableHeaderCell cell = new TableHeaderCell();
            TextBox txtSearch = new TextBox();
            txtSearch.Attributes["placeholder"] = grdPostData.Columns[i].HeaderText;
            txtSearch.CssClass = "form-control HaydaBre";
            cell.Controls.Add(txtSearch);
            row.Controls.Add(cell);
        }
        grdPostData.HeaderRow.Parent.Controls.AddAt(1, row);
   }

我收到了上述错误 的 grdPostData.HeaderRow.Parent.Controls.AddAt(1, row);

尝试调试RowDataBound命令但是,它没有进入上面提到的行。请帮忙。如果您还有其他需要,请告诉我。

1 个答案:

答案 0 :(得分:0)

将GridViewRow定义为 GridViewRow row = new GridViewRow(-1, -1, DataControlRowType.Header, DataControlRowState.Normal);然后将其添加为e.Row.Parent.Controls.AddAt(1, row);到gridview