将dojox.grid.EnhancedGrid中已排序或已删除的行与dojo.data.ItemFileWriteStore进行比较

将dojox.grid.EnhancedGrid中已排序或已删除的行与dojo.data.ItemFileWriteStore进行比较,dojo,Dojo,我已经浏览了dojo文档、堆栈溢出以及使用firebug彻底研究了EnhancedGrid对象本身,但我没有找到答案 我有一个增强的网格,我用值填充该网格,供用户排序,基本上创建一个选择集(使用间接选择插件)。然后,他们有一个按钮缩放到地图上的选定项目 问题是,在对列进行排序时,它不会改变存储本身中项目的顺序,我在每个项目中都保留了一个对象,告诉我如何缩放地图,因此我无法协调网格.selection.selected数组索引与存储。_arrayOfAllItems索引 编辑:请注意,我一直在使用

我已经浏览了dojo文档、堆栈溢出以及使用firebug彻底研究了EnhancedGrid对象本身,但我没有找到答案

我有一个增强的网格,我用值填充该网格,供用户排序,基本上创建一个选择集(使用间接选择插件)。然后,他们有一个按钮缩放到地图上的选定项目

问题是,在对列进行排序时,它不会改变存储本身中项目的顺序,我在每个项目中都保留了一个对象,告诉我如何缩放地图,因此我无法协调
网格.selection.selected
数组索引与
存储。_arrayOfAllItems
索引

编辑:请注意,我一直在使用Dojo 1.6,因为它被烘焙到我正在使用的API中。

看一看

您可以将idProperty设置为存储,例如:

var employeeStore = new dojo.store.Memory({data:employees, idProperty: "name"});
然后,您可以使用get方法操作具有该id属性的存储,如下所示:

// add a new employee
employeeStore.add({name:"George", department:"accounting"});
// remove Bill
employeeStore.remove("Bill");
// retrieve object with the name "Jim"
var jim = employeeStore.get("Jim");
而不是使用
存储。_arrayOfAllItems
。这样,您的
grid.selection
对象将包含您的id值,而不是数组索引(前提是网格的存储属性是您的存储)。这是我猜测会起作用的部分,因为我确信新的dojo是这样做的,顺便说一句,我鼓励您使用它


希望这能有所帮助,

我明白你的意思,这是一种更好的方式来访问商店中的商品。在Dojo1.6中,它是
store.fetchItemByIdentity()
idProperty
1.7版本的东西吗?我尝试添加它,我的
网格。选择
仍然填充为
[true,false,true,true,false]
我可以通过向网格添加一个ID列,并使用
dojo.query(“#queryGrid.dojoxGridRowSelected[idx$=“1\”])
找到所选行的ID,与存储进行比较。不太漂亮,但现在已经完成了。谢谢你的帮助,这是我的第一篇帖子,我可以投票支持你吗?它为我指明了正确的方向:Phaha,不客气@mbuna。这也是我的第一篇帖子。所以我也不是很确定:)。在1.7中,idProperty在过去为我工作。