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