0

У меня проблема с привязкой данных к шаблону редактирования для сетки кендо. Я привязал свою сетку к модели, которая является DataTable (она должна быть DataTable, потому что все cloumns должны быть сгенерированы динамически - я не знаю схему), я добавил экспорт, сортировку, страницы и т. Д. Я также добавил кнопку редактирования и определил другую cshtml-файл с шаблоном редактирования. Все работает почти идеально. Одна из проблем заключается в том, что я получаю пустую модель для редактирования шаблона. Вид:Kendo grid изменить шаблон привязка данных - нет данных

@(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 /> 
} 

Так .. когда я нажимаю Эд это кнопка, я получаю окно с правильным заголовком, с примечанием «не null! 0 DataRowView 0 " Итак, я пришел к выводу, что модель имеет правильный тип, одна из проблем заключается в передаче моей выбранной строки. Я очень новичок в сети и Kendo/telerik, поэтому мой вопрос: как отправить выбранную строку сетки для редактирования шаблона? Другой вопрос: почему, когда я нажимаю «редактировать», я не попадаю в действие UpdateRow в своем контроллере?

+0

Является ли beacuse мои шаблоны редактора визуализируются rifht после загрузки страницы, когда ни одна строка не выбрана? – Kula

ответ