【问题标题】:comparing sorted or removed rows in dojox.grid.EnhancedGrid to dojo.data.ItemFileWriteStore将 dojox.grid.EnhancedGrid 中排序或删除的行与 dojo.data.ItemFileWriteStore 进行比较
【发布时间】:2012-08-01 23:40:18
【问题描述】:

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

我有一个增强的网格,我用值填充用户进行排序并基本上创建一个选择集(使用indirectSelection 插件)。然后他们有一个按钮来放大地图上的选定项目。

问题是,在对列进行排序时,它不会改变商店本身中项目的顺序,我在每个项目中都保留了一个对象,告诉我如何在地图上缩放,所以我没有协调grid.selection.selected 数组索引与store._arrayOfAllItems 索引的方法。

编辑:请注意,我无法使用 Dojo 1.6,因为它已融入我正在使用的 API。

【问题讨论】:

    标签: dojo


    【解决方案1】:

    看看Dojo Object Store Tutorial。

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

    var employeeStore = new dojo.store.Memory({data:employees, idProperty: "name"});
    

    然后你就可以用这个 id 属性来操作 store,像这样使用 get 方法:

    // 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");
    

    而不是使用store._arrayOfAllItems。这样,您的 grid.selection 对象将包含您的 id 值而不是数组索引(前提是您的网格的存储属性是您的存储)。这是我猜测会起作用的部分,因为我确信新 dojo 的 dgrid 就是这样做的,顺便说一句,我鼓励您使用它。

    希望对你有帮助,

    【讨论】:

    • 我明白你的意思,因为这是访问商店中商品的更好方式。在 Dojo 1.6 中是 store.fetchItemByIdentity() idProperty 是 1.7 的东西吗?我尝试添加它,我的grid.selection 仍然填充为[true, false, true, true, false]
    • 我能够通过在网格中添加一个 ID 列并使用 dojo.query("#queryGrid .dojoxGridRowSelected [idx$=\"1\"]") 查找所选行的 ID 来与商店进行比较来获得所需的内容。不是那么漂亮,但它现在完成了。谢谢你的帮助,这是我的第一篇文章,我可以投票给你吗?它为我指明了正确的方向:P
    • 哈哈,不客气@mbuna。这也是我的第一个帖子之一。所以我也不确定:)。在 1.7 中,idProperty 过去曾为我工作过。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 2015-10-29
    • 2018-04-13
    • 1970-01-01
    相关资源
    最近更新 更多