Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#中的Gridview分页,动态SQL查询_C#_Sql_Sql Server_Gridview - Fatal编程技术网

c#中的Gridview分页,动态SQL查询

c#中的Gridview分页,动态SQL查询,c#,sql,sql-server,gridview,C#,Sql,Sql Server,Gridview,我是c#新手,使用Visual Studio 2010 我创建了一个网格视图并启用了分页。它适用于所有数据 但是我在页面顶部有一些下拉列表和过滤器按钮。当我按下每个过滤器按钮时,网格视图仅显示过滤后的数据 我为按钮单击事件编写了每个SQL语句 假设我有60条记录,网格视图显示每页10条记录。当我点击filter按钮并假设它只显示25条记录时。这意味着只有3页显示。这没关系,而且有效。但当我点击第二页或第三页时,它将再次显示所有数据,即5页 我知道问题在于它运行默认的SQL查询(我使用它以图形方式

我是c#新手,使用Visual Studio 2010

我创建了一个网格视图并启用了分页。它适用于所有数据

但是我在页面顶部有一些下拉列表和过滤器按钮。当我按下每个过滤器按钮时,网格视图仅显示过滤后的数据

我为按钮单击事件编写了每个SQL语句

假设我有60条记录,网格视图显示每页10条记录。当我点击filter按钮并假设它只显示25条记录时。这意味着只有3页显示。这没关系,而且有效。但当我点击第二页或第三页时,它将再次显示所有数据,即5页

我知道问题在于它运行默认的SQL查询(我使用它以图形方式将数据绑定到网格视图)。但我需要知道如何修复它。我只需要显示每个页面,而不更改过滤后的数据

以下是我的网格视图代码:

<asp:GridView ID="GridView1" runat="server"
    AutoGenerateColumns="False" DataKeyNames="DocumentID"
    DataSourceID="SqlDataSource1" CellPadding="4" ForeColor="#333333" GridLines="None"
    onselectedindexchanged="GridView1_SelectedIndexChanged"
    style="font-family: Tahoma; font-size: small; text-align: center;"
    Width="100%" AllowPaging="True" AllowSorting="True"
    onpageindexchanging="GridView1_PageIndexChanging">
    <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
    <Columns>
    <asp:BoundField DataField="DocumentID" HeaderText="Document ID"
    InsertVisible="False" ReadOnly="True" SortExpression="DocumentID" />
    <asp:BoundField DataField="DocumentType" HeaderText="Document Type"
    SortExpression="DocumentType" />
    <asp:BoundField DataField="ReceivedDate" HeaderText="Received Date"
    SortExpression="ReceivedDate" DataFormatString="{0:dd/MM/yyyy}" />
    <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" />
    <asp:CommandField SelectText="&gt;&gt;"
    ShowSelectButton="True" />
    </Columns>
    <EditRowStyle BackColor="#999999" />
    <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
    <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
    <PagerSettings PageButtonCount="5" Mode="NumericFirstLast" />
    <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
    <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
    <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
    <SortedAscendingCellStyle BackColor="#E9E7E2" />
    <SortedAscendingHeaderStyle BackColor="#506C8C" />
    <SortedDescendingCellStyle BackColor="#FFFDF8" />
    <SortedDescendingHeaderStyle BackColor="#6F8DAE" />
    <PagerSettings Mode="NumericFirstLast" PageButtonCount="10"  FirstPageText="First" LastPageText="Last"/>
</asp:GridView>
这是我的
SqlDataSource

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
    SelectCommand="SELECT InwardDetails.DocumentID, InwardDetails.Title, DocumentTypeDetails.DocumentType, InwardDetails.ReceivedDate FROM InwardDetails INNER JOIN DocumentTypeDetails ON InwardDetails.DocumentType = DocumentTypeDetails.DocumentTypeID"> 
</asp:SqlDataSource> 

从代码隐藏处绑定网格。当您使用任何筛选器时,请使用rowfilter筛选数据,并再次绑定网格以提供更新的数据。每次应用或删除筛选器时使用数据绑定以获取新数据

protected void Button1_Click(object sender, EventArgs e)
{

    DataSet ds = new DataSet();
    SqlConnection myCon = new SqlConnection(connectionstring);
    SqlDataAdapter adapter = new SqlDataAdapter(cmd, myCon);
    adapter.Fill(ds);
    DataView view = new DataView();
    view.Table = ds.Tables[0];
    view.RowFilter = "ColumnName = " + TextBox1.Text.Trim();
    GridView1.DataSource = view;
    GridView1.DataBind();
}

为什么要在分页方法中注释Gridview绑定?
protected void Button1_Click(object sender, EventArgs e)
{

    DataSet ds = new DataSet();
    SqlConnection myCon = new SqlConnection(connectionstring);
    SqlDataAdapter adapter = new SqlDataAdapter(cmd, myCon);
    adapter.Fill(ds);
    DataView view = new DataView();
    view.Table = ds.Tables[0];
    view.RowFilter = "ColumnName = " + TextBox1.Text.Trim();
    GridView1.DataSource = view;
    GridView1.DataBind();
}