2011-02-23 81 views
1

使用EXT Grid顯示實時數據。網格每秒刷新一次。它在每次刷新時滾動到頂部,直到我覆蓋scrollToTop函數。EXT Grid重新加載時掛起

Ext.override(Ext.grid.GridView, { 
    scrollToTop: Ext.emptyFn 
}); 

然而,它仍然掛起(防止滾動)一個非常重要的時間。我怎樣才能擺脫困境?

+0

每次載入多少條記錄?什麼瀏覽器和ExtJS的版本? – JamesHalsall 2011-02-23 14:28:13

+0

記錄:400行,15列。最新的生產EXT(3.3我認爲)。 Chrome瀏覽器 – Jim 2011-02-23 14:50:29

+1

400行是很多數據,如果你檢查螢火蟲gridload的響應,將它粘貼到一個文本文件中,看看該文件的大小有多大?如果可能,我會盡量減少你正在加載的行數 – JamesHalsall 2011-02-23 15:06:18

回答

1

很明顯,網格將花費一些時間非常重要的400行數據。您可以嘗試通過儘可能減少網格標記(無花哨的渲染器等)來減少渲染工作負載,但最好的辦法可能是等待ExtJS version 4(據稱提供a huge boost to grid performance),或者如果您願意使用插件,看看Ext.ux.Livegrid

0

就像這樣:

function OrderInfoLoad() { 
    var scrollTop = Efs.getExt("ordergrid").getView().scroller.dom.scrollTop; 
    var scrollHeight = Efs.getExt("ordergrid").getView().scroller.dom.scrollHeight; 
    Efs.Common.ajax("../sysadmin/baseRefWeb.aspx?method=CarManage_Order&pid=0", "", function (succ, response, options) { 
     if (succ) { // 是否成功 
      var xmlReturnDoc = response.responseXML; 
      Efs.getExt("ordergrid").getStore().loadData(xmlReturnDoc); 
      Efs.getExt("ordergrid").getView().scroller.dom.scrollTop = scrollTop 
         + (scrollTop == 0 
           ? 0 
           : Efs.getExt("ordergrid").getView().scroller.dom.scrollHeight 
             - scrollHeight); 
     } 

    }); 
} 

你應該記住滾動和重新加載它。