过滤gridview数据源

程序先生

我将无法使用后台代码在我的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会充满结果。

你有什么建议我该怎么做吗?

编辑

解决了。这是因为我的数据源为空,所以我不得不重新绑定它。

Ganesh_Devlekar

试试这个:

// 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章