javascript - dojo.data.objectStore.deleteItem

标签 javascript dojo

我有一个 dojo.store.Memory 包装在 dojo.data.ObjectStore 中,然后将其插入 dataGrid 中。我想从商店中删除一个项目并更新网格。我尝试了所有我能想到的组合,但都没有成功。例如:

var combinedStore = new dojo.data.ObjectStore({objectStore: new dojo.store.Memory({data: combinedItems})});
            combinedStore.fetch({query:{id: 'itemId'}, onComplete: function (items) { 
                var item = items[0];
                combinedStore.deleteItem(item);
                combinedGrid.setStore(combinedStore);
            }});
            combinedGrid.setStructure(gridLayout);

这不会引发任何错误,但合并存储.objectStore.data 仍然具有要删除的项目,并且网格仍然显示该项目。 (combinedStore.objectStore.data和combinedStore.objectStore.index之间似乎也完全不匹配);

最佳答案

幸运的是,有一个简单的解决方案!删除已成功进行,但是,您需要在删除后保存 ObjectStore 才能提交它。

将代码更改为如下所示:

onComplete: function (items) { 
    var item = items[0];
    combinedStore.deleteItem(item);
    combinedStore.save();
    combinedGrid.setStore(combinedStore);
}

那个小小的保存应该可以解决问题。 (请注意:保存必须在 deleteItem之后发生 - 如果将其放在 fetch block 之外,为了异步,它实际上会在 之前发生em> onComplete!)

工作示例:http://pastehtml.com/view/b34z5j2bc.html (检查您的控制台以获取结果。)

关于javascript - dojo.data.objectStore.deleteItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6977880/

相关文章:

java - 如何在我的 JSF Web 应用程序中拥有 AJAX 功能?

javascript - dojox.grid.DataGrid 自定义单元格?

javascript - 在 Dojo 中以编程方式更改按钮文本

Excel VBA - 当按钮具有相同名称时单击按钮

javascript - 找不到语法错误,帮我看看

javascript - 检索 Bootstrap 轮播中的隐藏值

javascript - 改变圆柱体的长度或拉伸(stretch)圆的高度

javascript - Windows 8 :How to use external images in windows 8 Metro app

Java 7 应用程序错误,因为尝试使用新的 Java 8 Javascript 引擎 Nashorn

javascript - ARCGIS Javascript 顶点自定义右键单击事件可能吗?