2011-02-23 79 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); 
     } 

    }); 
} 

你应该记住滚动和重新加载它。