簡體   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