KendoUI添加的擴展方法(ToDataSourceResult)似乎在Pages> Page#1上失敗。它在第一次加載頁面時工作正常,但是當我嘗試使用虛擬滾動,以異步方式獲取頁面2,3,4 ... N時,該方法忽略IEnumerable對象中的所有數據轉化。ToDataSourceResult擴展未填充DataSourceResult對象
我的代碼如下:
我有一個MVC控制器,其取像這樣的數據:
Database database = Database.GenerateDatabase();
ResultSet queryResults = database.GetEvents(
FilterHelper.GenerateQueryCriteria((List<IFilterDescriptor>) request.Filters, request.Page, request.PageSize)
);
Database.GetEvents返回類似的對象,以便:
public class ResultSet {
public List<ResultSetRow> Set;
public int PageRowCount;
public int TotalRecordCount;
}
每個ResultSetRow ,是一個具有1個字符串和2個int作爲屬性的類的實例。
此時,我設置了一個斷點並檢查ResultSet.Set的內容。數據庫使用request.PageSize指定的記錄正確填充List。我已確認所有頁碼都會返回結果。
下一階段,一切都嚴重:
DataSourceResult result = ((IEnumerable<ResultSetRow>) queryResults.Set).ToDataSourceResult(request);
我檢查DataSourceResult對象的內容,其數組屬性「數據」是空的。
爲什麼我的模型(ResultSetRow)未能轉換爲Kendo的DataSourceResult對象?
一些額外的信息:
- 聚集,不被使用的組,排序和過濾器。
- Database.GetEvents返回的結果數量與請求的頁面大小相匹配。
感謝您的幫助,所以社區
那麼,如果我忽略使用DataSourceResult,我可以直接json我的List對象嗎? –
@JT你可以......但Kendo已經爲你生成正確的數據庫查詢,所以你會重新發明輪子。 Kendo版本將在您打開過濾/訂購/ ... –
好吧,根據您的反饋我開發了一個工作: int pagenum = request.PageNum; request.PageNum = 1; DataSourceResult = ...; request.PageNum = pagenum; –