Dojo EnhancedGrid滚动(具有大量数据)

Dojo EnhancedGrid滚动(具有大量数据),dojo,dojox.grid,Dojo,Dojox.grid,我正在使用dojox.grid.EnhancedGrid,它是由MyGrid类创建的,如下所述 var MyGrid=declarenull{ 构造函数:函数应用程序、id、选项{ this.id=id; this.app=app; this.core_id=app.getCoreId; var myStore; var jquery={ 范围:'核心', 命令:“rest”, args:{ 资源:this.id, 服务:“熟的” }, core\u id:this.core\u id }; t

我正在使用dojox.grid.EnhancedGrid,它是由MyGrid类创建的,如下所述

var MyGrid=declarenull{ 构造函数:函数应用程序、id、选项{ this.id=id; this.app=app; this.core_id=app.getCoreId; var myStore; var jquery={ 范围:'核心', 命令:“rest”, args:{ 资源:this.id, 服务:“熟的” }, core\u id:this.core\u id }; this.jsonStore=new custom.store.JsonRest{ 目标:app.get\u dispatcher\u url, jquery:jquery, //setstruct是一个对象,用于提供设置新 //数据到达后立即生成网格结构。 set_结构:dojo.hitchthis,this.set_结构, app:this.app }; //避免闭包保存引用 //对jquery进行访问并防止其GCing jquery=null; this.memoryStore=新内存; myStore=new Cachethis.jsonStore,this.memoryStore; this.dataStore=newobjectstore{ objectStore:myStore, 发病时间:1月1日, onNew:编辑过的, onDelete:OneEdited }; myStore=null; //创建网格 this.grid=new EnhancedGrid{ store:this.dataStore, 高度:“100%”, 结构:[ {name:'等待数据…',字段:'无字段',宽度:'10em'} ], 插件:{ 菜单:{rowMenu:this.\u create\u menu}, 嵌套排序:对, 选择器:{row:'disabled',col:'disabled',cell:'multi'} } }; //启动网格 这个.grid.startup; } }; 注意,我省略了代码,只关注网格/存储的创建。MyGrid在ContentPane上显示网格

因此,我创建了一个对象来显示包含大量数据的网格,并滚动到底部,它将只正确地请求可见行。但是,当我创建第二个网格时,它会请求第二个网格的内容和第一个网格的所有数据

这怎么会发生?你知道这是什么原因吗

2013年2月22日编辑:

我创建了一个JSFIDLE来演示我遇到的问题:

如何重现问题:

单击New Tab按钮,打开控制台并检查提取了多少行。 快速转到网格底部,再次检查控制台。 再次单击New选项卡,转到控制台,您可以看到从以前的网格中提取了所有尚未加载的行。
注意:我发现这只发生在谷歌浏览器上。我用Firefox进行了测试,一切都很好。

你能在创建第一个和第二个网格的地方添加代码吗?很难想象没有这些信息会发生什么。我编辑了我的原始问题,并添加了创建网格的代码片段。代码被用来创建两个网格。嗯,没有什么特别的东西跳出来。您的小部件中可能有一些奇怪的行为,因为您没有扩展WidgetBase。您可以尝试扩展它,而不是null,并在自定义小部件的启动方法中调用this.grid.startup。如果您确实尝试过,请不要忘记this.inheritedarguments。如果有任何方法可以设置一个JSFIDLE来用模拟数据(可能只是一个数据存储而不是JsonRestStore)来演示这一点,我认为隔离问题确实会有帮助,因为您的代码似乎格式良好。您可以通过删除缓存和JsonRest存储来做一个示例,只需设置一个内存存储来接收数据数组。这将使示例变得更简单,如果问题是可重现的,我们知道它确实是您当前的结构—网格实例化或自定义小部件的结构。如果没有缓存和JsonRest无法复制它,那么我们知道问题存在于数据存储中。