0

我对基于 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 方法。我只需要发布整个数据,以便我可以一起处理。所以我把我的网格移到了表单之外。现在我很困惑如何捕获整个数据(文本框和网格中的数据)并提交给控制器方法。请帮我。

4

1 回答 1

0

为了防止整个页面被提交到 Post 方法,您应该使用 ajax 解决方案来发送和接收数据。

看看这个:DataGrid View with "CRUD operations" using Dojo DataGrid、JsonRest Store、Entity Framework、SQL Server、ASP.NET MVC Web API 和这个:Ajax with dojo/request。我希望,他们有所帮助。

于 2013-09-25T19:53:25.550 回答