私はWebベースのアプリケーション開発にかなり慣れていません。dojoツールキットでASP.NetMVC4を使用しています。私の要件は、データをキャプチャするための特定のテキストボックスと、表形式の特定の詳細をキャプチャするための1つの道場グリッドがあるようなものです。そのため、ItemFileWriteStoreでDojoグリッド(http://dojotoolkit.org/api/1.8/dojox/grid/DataGrid )を使用しています。私の見解は以下のようです(私はかみそりを使用しています)
@using (Html.BeginForm("CreateNewData", "Home", FormMethod.Post, new { id = "myForm" }))
{
<div class="controlWrapper">
<div class="controlLabel">
@Html.DisplayNameFor(model => model.Name)
</div>
<div class="controlValue">
@Html.TextBoxFor(model => model.Name)
</div>
</div>
<div class="controlWrapper">
<h4>
Table Items</h4>
<div id="myGrid">
</div>
<div id="addRemoveMode">
<button data-dojo-type="dijit.form.Button" id="addButton" onclick="addRecord()">
Add</button>
<button data-dojo-type="dijit.form.Button" id="removeButton" onclick="removeRecord()">
Remove Selected Rows
</button>
</div>
</div>
}
グリッドを作成するための私のJavaスクリプトは次のようなものです
require(["dojo/ready",
"dojox/grid/DataGrid",
"dojo/data/ItemFileWriteStore",
"dojo/json",
"dojo/query",
"dijit/form/TextBox"
], function (ready, DataGrid, ItemFileWriteStore, Json, query, TextBox) {
ready(function () {
var layout = [[
{ name: 'ID', field: 'ID', hidden: true },
{ name: 'Label', field: 'Label', width: '10%', editable: true },
{ name: 'Position', field: 'Position', width: '10%', editable: true }
]];
var attCodeData = {
identifier: 'ID',
items: []
};
console.log(globalVar);
attCodeData["items"] = globalVar;
myStore= new ItemFileWriteStore({ data: attCodeData })
myGrid= new DataGrid({
store: myStore,
structure: layout,
rowSelector: '20px'
},"divGrid");
myGrid.startup();
}
私の問題は、グリッドがフォーム内にあるため、行を追加または削除するたびに、フォームに記載されているPostメソッドにページが送信されることです。一緒に処理できるように、データ全体を投稿する必要があります。そこで、グリッドをフォームの外に移動しました。今、私はデータ全体(テキストボックスとグリッドのデータを一緒に)をキャプチャしてコントローラーメソッドに送信する方法を混乱させています。私を助けてください。