我对基于 Web 的应用程序开发非常陌生。我正在使用 ASP.Net MVC4 和 dojo 工具包。我的要求就像我有某些文本框来捕获数据,还有一个 dojo 网格来捕获表格格式的某些细节。所以我将 Dojo 网格(http://dojotoolkit.org/api/1.8/dojox/grid/DataGrid)与 ItemFileWriteStore 一起使用。我的观点如下(我正在使用剃须刀)
@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 方法。我只需要发布整个数据,以便我可以一起处理。所以我把我的网格移到了表单之外。现在我很困惑如何捕获整个数据(文本框和网格中的数据)并提交给控制器方法。请帮我。