我绞尽脑汁做了大量的研究和测试,却不知道发生了什么。
我有一个用一些 HTML 静态声明的 Dojo 数据网格。使用 GUI,我的用户将向 DataGrid 添加项目,它应该可以正常工作。但是,我希望有一个在某个时间点调用的函数,该函数使用 Dojo 的 setQuery 过滤显示在 DataGrid 中的数据。问题是,一旦我运行 setQuery 命令,网格中的所有数据都会消失,无论它是否与查询匹配!
这是一些示例代码:
var layoutItems = [[
{
field: "id",
name: "ID",
width: '5px',
hidden: true
},
{
field: "color",
name: "Color",
width: '80px'
}
]];
// Create an empty datastore //
var storeData = {
identifier: 'id',
label: 'id',
items: []
}
var store3 = new dojo.data.ItemFileWriteStore( {data : storeData} );
...
<div id="grid" dojoType="dojox.grid.DataGrid" jsId="grid5" store="store3" structure="layoutItems" queryOptions="{deep:true}" query="{}" rowsPerPage="40"></div>
...
function filterGrid() {
dijit.byId("grid").setQuery({color:"Red"});
}
……
function addItemToGrid(formdata) {
var jsonobj = eval("(" + dojo.toJson(formData, true) + ")");
var myNewItem = {
id: transactionItemID,
color: jsonobj.color
};
// Insert the new item into the store:
store3.newItem(myNewItem);
store3.save({onComplete: savecomplete, onError: saveerror});
}