[英]How can I get the page count of a PagedRdbQuery
我正在尝试获取分页查询的最大页面数,因此,如果我要在表单上分页数据,则说有300个数据项,每页显示100个,那么有3个页面,但是在这种情况下,我没有知道有多少数据项,因为它总是被添加到其中。 有没有一种简单的方法可以使用我用来获取数据的PagedRdbQuery来获得多少个最大页面?
到目前为止,我已经尝试过
private int GetMaxPagesOfRdbQuery(PagedRdbQuery query)
{
int pages = 0;
query.CurrentPage = 1;
while (!query.IsLastPage)
{
query.NextPage();
pages += 1;
}
return pages;
}
但是,这每次都会返回数字“ 9999”,这使我相信,只有在我实际访问并获取所有数据行时,它才会给出正确的数字,这对我来说是不切实际的,因为有些客户的数据表带有超过一百万条记录。 我还有其他方法可以使用Ideablade从数据库获取行数或获取最大页面数吗?
不幸的是,PagedRdbQuery和DevForce Classic都没有提供直接的方法。
作为一种解决方法,您可以在单独的查询中获得项目计数,但是同样,它也不是完全简单的,因为Classic也没有提供直接获取聚合的方法。 获取计数的最简单方法可能是使用DynamicEntity。 例如,这将检索Employee表中的行数:
var aType = DynamicEntityTypeBuilder.CreateType("Dummy", "yourdatasourcekeyname");
var query = new PassthruRdbQuery(aType, "select count(*) ct from Employee");
var entities = pManager.GetEntities<DynamicEntity>(query);
var ct = entities?[0]?[0] as int?;
如果使用DynamicEntity太麻烦,则另一个选择是直接使用ADO.NET,如果需要在服务器层上保留数据库访问权限,则可以通过InvokeServerMethod使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.