我有一个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
命令但是,它没有进入上面提到的行。请帮忙。如果您还有其他需要,请告诉我。
答案 0 :(得分:0)
将GridViewRow定义为
GridViewRow row = new GridViewRow(-1, -1, DataControlRowType.Header, DataControlRowState.Normal);
然后将其添加为e.Row.Parent.Controls.AddAt(1, row);
到gridview