繁体   English   中英

如何获取PagedRdbQuery的页数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM