存在道场两件式的数据存储:
- dojo.data.ItemFileReadStore - 只读数据存储
dojo.data.ItemFileWriteStore - ItemFileReadStore的扩展,对dojo.data.api.Write
在增加你的情况下,你应该使用ItemFileWriteStore - 它提供了修改商店数据的功能。
如:
你国家的数组,要在过滤使用它选择:
[{
abbr: 'ec',
name: 'Ecuador',
capital: 'Quito'
},
{
abbr: 'eg',
name: 'Egypt',
capital: 'Cairo'
},
{
abbr: 'et',
name: 'Ethiopia',
capital: 'Addis Ababa'
}]
首先,你需要创建ItemFileWriteStore数据存储JS变量。
<script>
dojo.require("dojo.data.ItemFileWriteStore");
dojo.require("dijit.form.FilteringSelect");
var storeData = {
identifier: 'abbr',
label: 'name',
items: //YOUR COUTRIES ARRAY
}
</script>
下一步 - 申报HTML标记过滤选择和itemFileWriteStore:
<div dojotype="dojo.data.ItemFileWriteStore" data="storeData" jsid="countryStore"></div>
<div dojotype="dijit.form.FilteringSelect" store="countryStore" searchattr="name" id="filtSelect"></div>
最后的附加创建特殊功能/删除/修改过滤项目选择:
添加新项:
function addItem() {
var usa = countryStore.newItem({ abbr: 'us', name: 'United States', capital: 'Washington DC' });
}
我希望这里都清楚。仅小注:“标识符”字段(在我们的例子中为“abbr”)在商店中必须是唯一的
删除项目 - 例如名称为“美利坚合众国”
function removeItem() {
var gotNames = function (items, request) {
for (var i = 0; i < items.length; i++) {
countryStore.deleteItem(items[i]);
}
}
countryStore.fetch({ query: { name: "United States of America" }, queryOptions: { ignoreCase: true }, onComplete: gotNames });
}
删除所有项目正如你可以看到我已创建查询时,发现与数据存储名称==“美利坚合众国”的项目。查询执行后,函数“gotNames”将被调用。 函数gotNames删除所有查询返回的项目。
而最后一个函数 - 编辑项目
它类似于删除功能。只有一个区别:
你应该使用itemFileWriteStore的setValue()
方法改变项目属性:
countryStore.setValue(item, "name", newValue);
Here - page with working example
荒谬。你会认为你可以这样做: dijit.byId('element')。store.load([键值对数组] – 2012-02-16 18:22:41