/ /検索フォームと編集可能なDataGridでJsonRestStoreを使用するには - DataGrid、dojo、jsonreststore

検索フォームと編集可能なDataGridでJsonRestStoreを使用するには - DataGrid、dojo、jsonreststore

私は検索フォームを実装しようとしています。結果はdojo 1.6データ・グリッドを介して表示されます。私は、レンダリングの作業を持って、私はフォームの送信にajax呼び出しを行い、ItemFileWriteStoreを使用してコールバック関数でDatagridを構築します。

 function search()
{
var action = "./search.json";
dojo.xhrPost({url: action, form:"searchForm",
load: function(result) {
var newStore = new dojo.data.ItemFileWriteStore({
data: {
identifier: "id",
items: JSON.parse(result),
url:"./search.json"
}
});
var grid = dijit.byId("searchResultsGrid");

if(grid == null) {
var layout = [[
{"name": "Id", "field": "id", "width": "50px"},
{"name": "Name", "field": "name", "width": "50px",editable: true,},
{"name": "Source", "field": "source", "width": "50px",editable: true,},
{"name": "Version", "field": "version", "width": "50px",editable: true,}
]];

var grid = new dojox.grid.DataGrid({
id: "searchResultsGrid",
store: newStore,
structure: layout,
autoHeight:true, autoWidth:true, editable:true, columnReordering:true,
rowSelector: "20px"
});
grid.placeAt("gridDiv");
grid.startup();
}
else {
grid.setStore(newStore);
}
}
});
}

さて、グリッドを編集可能にしてサーバーに変更を保存しようとすると、ItemFileWriteStoreでは何も起こりません。だから、私はJsonRestStoreに切り替えて、私が持続できるようにしたいと思っています。

しかし、問題は、私はどのように私のフォームを提出しなければならないのですか?つまり、JsonRestStoreに動的クエリを渡す方法はありますか? 私はJsonRestStoreが私の検索フォームの提出時と検索フォームの値に基づいてデータを取得するようにしたい。

前もって感謝します!

回答:

回答№1は0

私はdojo.store.JsonRestストアを使用します。 dojox.grid.DataGridでJsonRestストアを使用するには、以下のようにdojo.data.ObjecStoreにラップする必要があります。

var newStore = new dojo.store.JsonRest({
target: "/search/",
idProperty: "id"
});
newStore = new dojo.data.ObjectStore({
objectStore: newStore
});

これで、/ search / targetはあなたのRESTのURLになります。 / search /のバックエンドはRESTをサポートできるはずです。つまり、GET、PUT、POST、DELETEリクエストをサポートできるはずです。を見てみましょう http://dojotoolkit.org/reference-guide/1.10/quickstart/rest.html Dojo 1.10では、バックエンドを実装する方法は似ています。

RESTバックエンドを実装して、データを取得および更新できるようにします。グリッドにクエリパラメータを設定することで、RESTバックエンドにクエリパラメータを送信できます。

grid.setQuery({
param1: 1,
param2: 2
});

これにより、JsonRestストアはurl / search /?param1 = 1&param2 = 2を使用してグリッド内のデータのリフレッシュセットをロードします。