Kendo 网格编辑模板数据绑定 - 无数据

Kendo grid edit template data bind - no data

我在为 kendo 网格编辑模板数据绑定时遇到问题。 我已将我的网格绑定到 DataTable 模型(它必须是 DataTable,因为所有 cloumns 都必须动态生成 - 我不知道架构),我添加了导出、可排序、页面等。我还添加了编辑按钮,并定义了另一个 cshtml带有编辑模板的文件。这一切都近乎完美。一个问题是我收到用于编辑模板的空模型。 查看:

@(Html.Kendo().Grid(Model.Data)
   .Name("OpertionalViewGrid")
   .DataSource(dataSource => dataSource
     .Ajax()
    .ServerOperation(false)
    .Events(events => events.Error("error_handler"))
    .Model(model =>
    {
        model.Id(p => p.Row[0]);
        if (Model.Data != null)
        {
            foreach (System.Data.DataColumn column in Model.Data.Columns)
            {
                var field = model.Field(column.ColumnName, column.DataType);
            }
        }
    })
    .PageSize(20)
    .Read(read =>
 read.Action("Export_Read","OperationalView").Data("getRow"))
    .Update(up => up.Action("UpdateRow", "OperationalView").Data("getRow"))
)
   .Columns(c =>
   {
       if (Model.Data != null)
       {
           int index = 0;
           foreach (System.Data.DataColumn column in Model.Data.Columns)
           {
               var col = c.Bound(column.ColumnName).Width("300px");
               if (index < 2)
               {
                   col.Locked(true).Lockable(false);
               }

               index++;
           }
           c.Command(command => { command.Edit();}).Width(100);
       }
   })
.Editable(editable => editable
    .Mode(GridEditMode.PopUp)
    .TemplateName("OperationalViewEditor")
    )
.Scrollable()
.Reorderable(reorder => reorder.Columns(true))
.Resizable(r => r.Columns(true))
.Filterable(ftb => ftb.Mode(GridFilterMode.Row))
.HtmlAttributes(new { style = "height:100%" })
.Pageable()
.Navigatable()
.Sortable()
.Groupable(g => g.ShowFooter(true))
.ToolBar(tools => tools.Excel())
.Excel(excel => excel.AllPages(true))
.ToolBar(tools => tools.Pdf())
    .Pdf(pdf => pdf
        .AllPages()
        .AvoidLinks()
        .PaperSize("A4")
        .Scale(0.8)
        .Margin("2cm", "1cm", "1cm", "1cm")
        .Landscape()
        .RepeatHeaders()
        .TemplateId("page-template")
        .FileName("Export.pdf")
    )
         )   

我还有我的 getRow 函数:

<scriprt>
function getRow()
{

    var grid = $('#OpertionalViewGrid').data('kendoGrid');
    var selectedItem = grid.dataItem(grid.select());
    return selectedItem;
} </script>

在我的控制器中我有:

public ActionResult Export_Read([DataSourceRequest]DataSourceRequest request)
    {
        var ovs = new OperationalViewService();

        return Json(ovs.Read()/*.ToDataSourceResult(request)*/);
    } 
public ActionResult UpdateRow([DataSourceRequest] DataSourceRequest dsRequest, DataRowView row)
    {

        var t = 5;

        return Json(row/*ModelState.ToDataSourceResult()*/);
    }

还有我的编辑模板:

@model System.Data.DataRowView

<h3>Customized edit template</h3>
@if(Model == null)
{
   <label> null</label>
}
else
{
<label> not null!!!!!!</label><br />
@Html.Label(Model.DataView.Table.Columns.Count.ToString())<br />
@Html.Label(Model.ToString())<br />
@Html.Label(Model.Row.Table.Columns.Count.ToString())<br />
}
@for (int i = 0; i < Model.DataView.Table.Columns.Count; i++)
{
@Html.LabelFor(model =>       model.DataView.Table.Columns[i].ColumnName.ToString())
@Html.LabelFor(model => model.Row[i].ToString())
<br />
}

所以..当我点击“编辑”按钮时,我得到一个 window 和正确的 header,并附注“01234 not null!! 0 DataRowView 0” 所以我得出结论,模型是正确的类型,一个问题是传递我选择的行。 我对网络和 Kendo/telerik 很陌生,所以我的问题是:如何将我选择的网格行发送到编辑模板? 另一个问题是:为什么当我单击 "edit" 时,我没有在我的控制器中进入 UpdateRow 操作?

我已经通过使用编辑模式 InCell 解决了这个问题 - 一个重要的注意事项是指定列类型,如下所示:http://www.telerik.com/forums/inline-batch-crud-fails-with-datatable-model