我将无法使用后台代码在我的gridview结果中进行搜索。
我有一个按钮和一个gridview:
<asp:TextBox ID="txtPaperId" Width="146" runat="server" />
<asp:Button runat="server" ID="btnSearch" Text="Search" OnClick="FilterResult"/>
<asp:GridView ID="gvwResavePositions" runat="server" EmptyDataText="No Positions found!"
AllowPaging="True" AllowSorting="True" PageSize="50" AutoGenerateColumns="False"
SkinID="gridviewGridlinesSkin" HeaderStyle-HorizontalAlign="Left"
OnPageIndexChanging="gvwResavePositions_PageIndexChanged"
HorizontalAlign="Left" Width="100%">
<HeaderStyle BackColor="DarkGray" Font-Bold="True" HorizontalAlign="left" />
<RowStyle HorizontalAlign="Left" />
<Columns>
<asp:BoundField ItemStyle-Width="40px" DataField="strPaperId" HeaderText="K+Id / PaperId" ReadOnly="True"/>
<asp:TemplateField HeaderText="Resave">
<ItemTemplate>
<asp:CheckBox ID="bResave" runat="server" Width="50"/>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<HeaderStyle HorizontalAlign="Left" />
</asp:GridView>
我后面的代码:
protected void FilterResult(object sender, EventArgs e)
{
try
{
(gvwResavePositions.DataSource as DataTable).DefaultView.RowFilter = string.Format("strPaperId = '{0}'",
txtPaperId.Text);
}
catch (Exception ex)
{
var t = ex.Message;
}
}
当我按下“搜索”按钮时,我得到“对象引用未设置为对象的实例”。
objectdatasource是在按下搜索按钮(这是另一个按钮...)之前设置的,因此,当FilterResult进行时,gridview会充满结果。
你有什么建议我该怎么做吗?
编辑
解决了。这是因为我的数据源为空,所以我不得不重新绑定它。
试试这个:
// save your datatable in session while binding gridview
// Session["Dt_GridView"]=Your_datatable;
protected void FilterResult(object sender, EventArgs e)
{
try
{
// DataTable dt = (DataTable)gvwResavePositions.DataSource; this reutrn null
// hence
//gvwResavePositions.DataSource as DataTable this will return null
DataTable dt = (DataTable)Session["Dt_GridView"];
dt.DefaultView.RowFilter = string.Format("strPaperId = '{0}'",
txtPaperId.Text);
gvwResavePositions.DataSource = dt;
gvwResavePositions.DataBind();
}
catch (Exception ex)
{
var t = ex.Message;
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句