分页数据源用于网格视图分页

6
我正在使用PagedDataSource来进行GridView的自定义分页。以下是代码示例:

PagedDataSource dataSource = new PagedDataSource();

int virtualRowCount = Convert.ToInt32(dataset.Tables[1].Rows[0]["TotalRows"]);
dataSource.AllowCustomPaging = true;
dataSource.PageSize = 15;

dataSource.VirtualCount = virtualRowCount;
dataSource.DataSource = dataset.Tables[0].DefaultView;


gvTaxPayerLoginDetail.DataSource = dataSource;
gvTaxPayerLoginDetail.DataBind();

我正在从我的存储过程中返回“totalrows”(该值设置在virtualRowCount中),并且数据集中的tables[0]包含实际行数。我成功获得了结果,但是我的分页器消失了。分页器不再显示。我该如何告诉gridview从PagedDataSource中获取值?
使用ASP.NET 4进行操作。

请问您能否采纳此答案?因为我认为这个问题不会再有什么其他变化了。 - Luke Baughan
2个回答

3
ASP.NET 2.0+ 版本:
本文 http://www.codewrecks.com/blog/index.php/2008/02/09/aspnet-20-gridview-custom-sorting-with-pageddatasource/ 扩展了标准的 GridView,并提供了管理代码以实现 PagedDataSource 集成。
ASP.NET 4.5 版本:
在 GridView 上设置 AllowPaging 和 AllowCustomPaging 属性以及分页数据源属性。
PagedDataSource dataSource = new PagedDataSource();

int virtualRowCount = Convert.ToInt32(dataset.Tables[1].Rows[0]["TotalRows"]);
dataSource.AllowCustomPaging = true;
dataSource.PageSize = 15;

dataSource.VirtualCount = virtualRowCount;
dataSource.DataSource = dataset.Tables[0].DefaultView;

gvTaxPayerLoginDetail.AllowPaging = true; // See this line here
gvTaxPayerLoginDetail.AllowCustomPaging = true; // and this line here
gvTaxPayerLoginDetail.DataSource = dataSource;
gvTaxPayerLoginDetail.DataBind();

此外,这篇文章也可能有所帮助:http://www.byteblocks.com/post/2012/03/20/Use-Custom-Paging-in-Grid-View.aspx

抱歉,我错过了您关于框架版本的评论!不过我认为 AllowPaging 是存在的,对吧? - Luke Baughan
是的,但由于某种原因,VirtualCount属性被忽略了。 - Jupaol
我已经更新了我的答案,提供了2.0+版本,但我会继续寻找一种更少侵入性的机制!此外,我点赞了这个问题,因为它很有趣!;o) - Luke Baughan

1
PagedDataSource dataSource = new PagedDataSource();

int virtualRowCount = Convert.ToInt32(dataset.Tables[1].Rows[0]["TotalRows"]);

dataSource.DataSource = dataset.Tables[0].DefaultView;

dataSource.AllowCustomPaging = true;
dataSource.PageSize = 15;
dataSource.VirtualCount = virtualRowCount;
dataSource.CurrentPageIndex  =0;

gvTaxPayerLoginDetail.DataSource = dataSource;
gvTaxPayerLoginDetail.AllowPaging=True;
gvTaxPayerLoginDetail.DataBind();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接