2011-04-11 78 views
3

我在使用DataGrid的DOJO中遇到问题。我用此代码每隔1秒刷新一次网格。DataGrid的Dojo滚动问题

window.store_data_log= new dojo.data.ItemFileReadStore({data:{items:temp}}); 
var grid = dijit.byId("grid_log"); 
grid.setStore(window.store_data_log); 

它工作正常(放入新数据)。问题是,当我有很多行,我向下滚动,我的网格刷新,我的滚动进入顶部网格。如何解决这个问题?

回答

2

当然,你完全清理商店并从头开始重新设置它。当您重置商店时,您基本上重置网格。当你刷新它的商店时,我希望没有什么比重新设置滚动位置的网格更容易。

您可能想了解如何正确使用商店,而不是仅尝试重置商店。我在这里回答了这个:

How to refresh datagrid

如果你使用正确的道场,你会得到很好的效果,但只是走了一条捷径,并试图刷新店里每一秒,你会得到一个无法使用的网格。

您需要退后一步并解决您的应用程序体系结构,而不是期望网格刷新成为某种魔术解决方案。

0

通过(道场)datagrid.js去后,我发现如何解决这个问题:

//datastore you're using// 
var store = new dojox.data.QueryReadStore({ 
    //in the fetch()// 
    fetch: function (request){ 
     //add the following:// 
     request.isRender = false; 
    } 
}); 

重要说明:只有设置request.isRenderfalse,当你不希望电网回滚动到顶部。请记住,在某些情况下(如在新列上排序),最好将其设置为true。只需添加一些if/else语句来帮助逻辑。