我有一個SmartGWT ListGrid,每個字段包含16個字符串。網格連接到通過REST提供的數據源。儘管數據源中的數據量很大,但我仍面臨一些問題。SmartGWT ListGrid大數據集問題
在處理非常小的數字時,即使在處理200,000條記錄時也沒有問題。然而,當涉及到更大的數據集時,例如我之前嘗試過的有260萬條記錄,網格只顯示前850,000條記錄,然後拒絕進一步尋找頁面。更奇怪的是,當我的數據源擁有大約2000萬條記錄時,網格只顯示前20條,然後拒絕頁面。
Strangley我可以看到使用isc.showConsole()在我的RPC響應中返回的數據;並且可以看到它正在返回正確的數據,實際上即使它返回了64條有效記錄,它也只會顯示前20條。totalRecords正確返回爲2000萬,但它不會返回頁面。
我網的設置如下
ListGrid grid = new ListGrid();
DataSource ds = Application.getMyDataSource();
grid.setCriteria(new Criteria("someid", 627263));
grid.setDataSource(ds);
grid.setAutoFetchData(true);
我的數據源是設置正確,因爲它完美的作品在較小的數據集,每場都作爲一DataSourceTextField創建。
服務器端接受輸入請求,查找進入的someid,檢查_startRow,_endRow參數找到這些行(我沒有爲此使用數據庫)並手動設置startRow,endRow和totalRow字段。
當我檢查數據回來的數據是正確的,但網格拒絕正確顯示它。
我錯過了什麼?列表網格是否有最大尺寸?從我看到他們應該處理數百萬條記錄,但我的似乎完全失敗。
編輯
經進一步檢查,似乎它是SmartGWT的處理滾動條的大小的方式錯誤。目前我不知道如何解決這個問題。
當滾動到表的底部應該是230萬行表時,顯示的最後一行是894,785。這遠遠低於預期的行數。
此時從數據源返回的所有數據都是正確的。有趣的是,點擊最後一行並使用鍵盤上的向下箭頭進行滾動效果很好,這對我來說重新強調了它是一個滾動條問題。
這聽起來像某種溢出/內存問題。你是否收到任何警告/錯誤? –
我忘了提,沒有錯誤,沒有溢出,沒有什麼不尋常的。通過REST傳輸的數據只是分頁數百萬條記錄的一個子集。一般來說,它只能返回約60條記錄,這是我所期望的。問題是ListGrid不能正確處理它。 –
需要檢查的東西:totalRows的值(必須大於endRow - +10 - 才能觸發正確的滾動縮略圖大小),從服務器獲取並返回的記錄數,接收到客戶端的記錄數,開始/結束/總計行每個頁面請求開始和結束時的值 – Sithsu