Asp.net-Mvc

在表單送出上發布劍道網格數據

  • August 7, 2015

我想將數據從 Kendo Grid 發佈到伺服器,並將其保存到數據庫中。

為此,我使用瞭如下形式:

@using (Html.BeginForm("MainDocumentSave","Document"))
{
   <div class="row-fluid">
       <div class="span10">

           @(Html.Kendo().Grid<Invoice.Models.ViewModels.SegmentViewModel>()
               .Name("Segment")
               .TableHtmlAttributes(new { style = "height:20px; " })
               .Columns(columns =>
               {
                   columns.Bound(p => p.AirlineShortName).EditorTemplateName("AirlineEditor").Title("Airline").ClientTemplate("#=AirlineName#").Width(5);
                   columns.Bound(p => p.DepartureDate).Width(9);
                   columns.Bound(p => p.Arrives).EditorTemplateName("ArrivalLocation").Title("Arrival").ClientTemplate("#=Arrives#").Width(5);
                   columns.Bound(p => p.ArrivalDate).Width(7);
                   columns.Bound(p => p.FlightNumber).Width(8);
               })
               .Editable(editable => editable.Mode(GridEditMode.InCell))
               .Navigatable()
               .Sortable()
               .Scrollable(scr => scr.Height(200))
               .Scrollable()
               .DataSource(dataSource => dataSource
                   .Ajax()
                   .Batch(true)
                   .ServerOperation(false)
                   .Events(events => events.Error("error_handler"))
                   .Model(model => model.Id(p => p.AirlineName))
                   .Create("Editing_Create", "Grid")
                   .Read("Segment_Read", "Document")
                   .Update("Editing_Update", "Grid")
                   .Destroy("Editing_Destroy", "Grid")
               )
           )

       </div>
   </div>
   <button type="submit" class="btn btn-primary"> Save Segments</button>
}

但是送出後,Kendo Grid裡面的數據並沒有Posted。如何將 Kendo Grid 數據發佈到伺服器?

網格數據不在表單元素中。表單元素僅在編輯單元格時出現,然後將其刪除。您不能使用表單送出按鈕將數據發佈到伺服器。

正確的方法是添加網格提供的“保存”命令按鈕:

@(Html.Kendo().Grid<Invoice.Models.ViewModels.SegmentViewModel>()
   .Name("Segment")
   .ToolBar(toolbar => {
       toolbar.Save(); // add save button to grid toolbar
   })
   // ... rest of options ...

或者通過呼叫Grid 小元件上的saveChanges() :

<button type="button" id="save">Save Segments</button>

$("#save").on("click", function () {
   $("#Segment").data("kendoGrid").saveChanges();
});

Grid 不是表單元素,不能簡單地發佈到伺服器。您可以利用 Grid 提供的模板並根據要送出給伺服器的不同行模型創建隱藏元素。

**此程式碼庫**中使用了相同的方法,它準確地展示了您正在搜尋的內容。

引用自:https://stackoverflow.com/questions/19948248