2015-05-26 30 views
1

我一直在面對以下場景的劍道電網問題。用戶界面對於劍道電網變得沒有反應

我有一個18列的劍道網格。用戶可以選擇多行。行數大多超過10000.

要獲得選定的行,我使用的是grid.select()。要從行中提取內容,我正在使用grid.dataItem(row)

以下是代碼片段。

  var listofselectedrows = grid.select(); 
      listofselectedrows.each(function (index, row) { 
      var currentDataRow = grid.dataItem(row); 
      }); 

每當所選行數更多時。用戶界面變得無法響應。 我調試了代碼。 grid.dataItem(row)正在執行很多操作,導致網頁無響應。

請幫我解決這個問題。

問候

+0

請發表您的網格代碼。 – Nicholas

+0

你的意思是「行數大多超過10000」,你想在1頁上顯示10000行嗎?大多數情況下,我使用分頁與服務器/客戶端過濾,並顯示每頁20行,這意味着從服務器獲取更少的數據,更快,更容易維護。 –

回答

0

如果我看着他們的來源,使用正則表達式/k-grouping-row|k-detail-row|k-group-footer/dataItem功能循環throung所有行元素,以獲得行索引。我相信使用數據源getByUid會比使用dataItem函數更快。

更改您的代碼是這樣

$.each(listofselectedrows, function (index, row) { 
    var uid = $(row).data("uid"); 
    var currentData = grid.dataSource.getByUid(uid); 
}); 
+0

非常感謝。它像魅力一樣工作。 – Sharvari

1

性能Tunning

當綁定到大型數據集或使用較大的頁大小時,減少內存DOM對象活性爲性能是重要的。 Kendo Grid提供了內置UI虛擬化功能,可以高度優化綁定到大型數據集。啓用UI虛擬化是通過簡單的配置完成的。

$(document).ready(function(){ 
     $("#grid").kendoGrid({ 
     scrollable: { 
      virtual: true 
     } 
     }); 
    }); 
+0

嗨,我試過你的解決方案。但似乎不適用於大量的數據行。 'grid.dataItem(row)'時,UI stll無響應;'' – Sharvari

+0

只是一個建議。嘗試禁用佈局,而你一旦做到這一點使它 – BhandariS

0

使用分頁:

$("#grid").kendoGrid({ 
    dataSource: { 
     type: "odata", 
     transport: { 
      read: "http://demos.kendoui.com/service/Northwind.svc/Orders" 
     },  
     pageSize: 10, 
     serverPaging: true   
    }, 
    height: 250,  
    pageable: true, 
    selectable: "row multiple", 
    columns: [ 
     "OrderID", 
     "Freight",   
     "ShipName",        
     "ShipCity"   
    ], 
}); 
+0

在需要執行各種同步,因此可以加載數據河畔;噸這裏使用分頁。 – Sharvari