私は頭を悩ませ、たくさんの調査とテストを行いましたが、何が起こっているのかわかりません.
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});
}