Javascript Dojo-调用sort后,数据网格中的行消失
在对网格进行排序时,我遇到了DataGrid的一个问题 使用此isseue,当我们在一个调用流中执行此操作序列时,所有行都将消失:Javascript Dojo-调用sort后,数据网格中的行消失,javascript,datagrid,dojo,store,dojox.grid.datagrid,Javascript,Datagrid,Dojo,Store,Dojox.grid.datagrid,在对网格进行排序时,我遇到了DataGrid的一个问题 使用此isseue,当我们在一个调用流中执行此操作序列时,所有行都将消失: 将一个项目添加到网格的存储中 从网格的存储中删除一项 储蓄商店 调用grid.sort 调用grid.sort后,对网格尿布中的所有行进行排序(尽管它们仍在存储中)。如果我们重复同样的步骤,他们就会回来 我有一个复制程序代码,基于DataGrid的自定义网格组件如下: 如果你像我在第38行那样调用MyGrid的addOneDelOne,你将能够重现这个问题 在此代
我已经在Dojo1.9和1.13上测试了它,我相信我们找到了这个问题的解决方案。 问题在于Dojo的DataGrid的fetchbegin方法 当我们在DataGrid上调用sort时,它实际上通过调用updateRowCount(0)来清除一些计数器。 清除的计数器之一是this.invalidated.rowCount,DataGrid和dojo实际使用它来打印记录。打印记录数等于此.invalidated.rowCount值 稍后,在grid.sort()调用处理期间,dojo转到\u获取(0,isRender)方法。这个方法最终调用This.store.fetch({…}),它根据存储返回的项更新网格。它是通过回调方法_onFetchBegin和_onFetchComplete完成的。问题出在\u onFetchBegin 在我们的例子中,从存储返回的项目数等于网格中的行数。if(this.rowCount!=大小)
if(!size){
this.views.render();
this._resize();
this.showMessage(this.noDataMessage);
this.focus.initFocusView();
}else{
this.showMessage(); <- we ended up here. And we we do not update the RowCount :(
}
else{
this.updateRowCount(size);
this.showMessage();
}