题
我有一个ListView,我将数据绑定到这样的对象集合:
int total;
List<Client> clientList =
clientData.GetClients(criteria, pageNum, pageSize, out total);
uxClientList.DataSource = clientList;
uxClientList.DataBind();
其中pageNum,pageSize和total参数有助于在数据访问层进行分页。到目前为止一切都很好。
现在我可以在页面上抛出一个DataPager,将它指向ListView并获得一个不错的分页UX。 当您以编程方式绑定而不是使用数据源控件进行声明性绑定时,还会有更多内容,但问题是DataPager期望每次都检索整个结果集,应该从中计算分页,因此它将结果的单个页面作为总可用记录返回并呈现为好像只有一页结果可用。换句话说,如果我们切换到GetClients的非分页版本,上面的场景适用于DataPager:
List<Client> clientList = clientData.GetClients(criteria);
uxClientList.DataSource = clientList;
uxClientList.DataBind();
显然,由于我们的数据访问层足以为我们提供一次检索页面的方法,因此最好每次检索所有记录。如果我们能够明确告知DataPager总可用记录,那么它仍然可以自动创建分页输出,但一次只需要一个页面。
我没有找到一种简单的方法来做到这一点,我没有在搜索中发现任何东西。诚然,我目前对DataPager的实现没有深刻的理解,所以希望我忽视了一些事情。
解决方案
你没有忽视任何事情。
处理大型结果集时,您需要关闭分页并添加自己的分页控件。
根据我的经验<!> lt; <!> lt; LT <!>; GT <!>; GT <!>; GT <!>;满足。无论如何,没有人超过第3页。
其他提示
查看ListViewPagedDataSource及其 AllowServerPaging 属性,我认为可能是您正在寻找的东西..
不隶属于 StackOverflow