Dojo - 如何使用更新的ItemFileReadStore数据刷新组合框

时间:2011-06-05 16:41:21

标签: javascript html ajax dojo

我在Dojo中为combobox更改了ItemFileReadStore。 我的代码看起来像

    <span dojoType="dojo.data.ItemFileReadStore"
                jsId="comboStore"
                data="transformData">
            <select dojoType="mywidget.DropDown" id="transformCombo" value="" store="comboStore" searchAttr="name" name="state" maxHeight="100"/>

我的小部件类似于dojo组合框小部件。我更改了transformData,但直到页面再次完全重新加载才更新组合框。有什么想法吗?

2 个答案:

答案 0 :(得分:3)

如果内容正在更改服务器端,并且您只想刷新本地副本而不重新加载页面,则可以在商店中调用fetch并在收到新数据时更新组件。

这是我用来在服务器端内容更新时刷新dojox.grid.DataGrid的代码:

// initialise store and link to DataGrid
var store = new dojo.data.ItemFileReadStore({
    url: "items.json",
    clearOnClose: true,
    urlPreventCache: true
});
var grid = dijit.byId("grid")
grid.setStore(store);

// code to update local copy
store.close();
store.fetch({
    onComplete: function(items, request) {
        grid._refresh();
    }
});

如果要修改数据客户端,则应该像Andrei建议的那样使用ItemFileWriteStore。

编辑: grid.sort()可用于刷新DataGrid,以替代grid._refresh()(其行为可能随时间而变化)

答案 1 :(得分:0)

如何刷新ItemFileReadStore? ItemFileReadStore - 它是只读数据存储区。在您的情况下,您应该使用ItemFileWriteStore。看看这个问题“dijit.form.filteringselect dynamically change options”。我认为这就是你要找的东西。