如何获取PagedRdbQuery

时间:2018-05-21 14:46:38

标签: c# winforms devforce

我试图获取分页查询的最大页数,因此,如果我要在表单上分页数据,比如说有300个数据项,每个页面显示100个,那么那里有&#39 ; 3页,但在这种情况下,我不知道有多少数据项,因为它总是被添加到。我是否有一种简单的方法可以使用PagedRdbQuery来获取数据以获取最多有多少页面?

到目前为止,我已经尝试了

 private int GetMaxPagesOfRdbQuery(PagedRdbQuery query)
    {
        int pages = 0;
        query.CurrentPage = 1;
        while (!query.IsLastPage)
        {
            query.NextPage();
            pages += 1;
        } 
        return pages;
    }

然而,这会返回数字" 9999"每次让我相信它只会给出正确的数字,如果我实际经历并获取所有数据行,这对我来说是不切实际的,因为一些客户拥有超过一百万条记录的数据表。有没有其他方法我可以使用Ideablade从我的数据库中获取行数或获取最大页数?

1 个答案:

答案 0 :(得分:0)

不幸的是,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。