c# - ASP.NET 中 GridView 的分页(不会转到第 2,3 页等)

标签 c# asp.net gridview pagination

我有一个Gridview,我想设置分页。到目前为止我已经:

<asp:GridView ID="grdActivity" 
              runat="server" 
              AutoGenerateColumns="False"  
              AllowPaging="True" 
              PageSize="30"     
              OnPageIndexChanging="gridView_PageIndexChanging">

后面的C#代码是:

protected void Page_Load(object sender, EventArgs e)
{
     if (!Page.IsPostBack)
     {
          dsActivity myDataSet = new dsActivity();

          myDataSet = clsDataLayer.GetActivity(Server.MapPath("DB.mdb"));

          grdActivity.DataSource = myDataSet.Tables["tblActivity"];

          grActivity.DataBind();
     }
}

protected void gridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
     grdActivity.PageIndex = e.NewPageIndex;
     grdActivity.DataBind();
}

我没有收到任何错误,但当我按任何其他页面(2 及以上)时,什么也没有显示,只有一个空白页面,并且 GridView 消失。我错过了什么吗?我看到数百页显示了执行此操作的确切代码。

最佳答案

您将需要重新分配数据源属性。回发后 grActivity.DataSource 为 null,对其调用 DataBind 将清除网格。

protected void gridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
     //re-assign your DataSource
     dsActivity myDataSet = new dsActivity();
     myDataSet = clsDataLayer.GetActivity(Server.MapPath("DB.mdb"));
     grdActivity.DataSource = myDataSet.Tables["tblActivity"];

     //Set the new page index
     grdActivity.PageIndex = e.NewPageIndex;

     //apply your changes
     grdActivity.DataBind();
}

一些注意事项:

  • 您应该考虑重构代码,将数据带入在 Page_Load 上和 gridview_PageIndexChanging 内调用的单个方法中(请参阅 @ekad 的答案)

  • 如果您有大量数据,您应该考虑直接在数据库上对数据进行分页。现在,如果您的表有 500 行,则所有行都将加载到数据集中,即使只有一小部分(页面大小)将显示在网格中

关于c# - ASP.NET 中 GridView 的分页(不会转到第 2,3 页等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21494297/

相关文章:

c# - 使用接口(interface)将行添加到 XtraGrid

c# - (重新)从我的 C# 代码中启动 Windows 服务不起作用

c# - 从Entity Framework Core调用 native SQL Server函数

c# - 如何为使用 NPOI 创建的 Excel 中的单元格设置验证

c# - 如何在 Windows 10 应用程序 (UWP) 中使用 OCR?

c# - viewstate MAC 验证失败 - 查看状态错误

c# - 如何在具有多个ID的div上获取JavaScript函数

asp.net - 在 asp.net core 2.0 中使用 angular 5 上传文件。文件为空

css - 如何在IE中使用nth child

android - 滚动时GridView的列不是直线