2017-02-15 8 views
0

私のビューには、1つのプロパティがDataTable(Dataという)剣道グリッド:剣道グリッド、datatableバインド:System.ArgumentException:指定された名前を持つID:IDが型に見つかりません:System.Data.DataRowView

@(Html.Kendo().Grid(Model.Data) 
    .Name("MyGrid") 
    .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").EditorTemplateName("String"); 
       if (index < 2) 
       { 
        col.Locked(true).Lockable(false); 
       } 
       index++; 
      } 
     } 
    }) 
    .DataSource(dataSource => dataSource 
    .Ajax() 
    .Batch(true) 
    .ServerOperation(false) 
    .Model(model => 
    { 
     model.Id(p => p.Row[0]); 
     if (Model.Data != null) 
     { 
      model.Id(Model.Data.Columns[0].ColumnName); 
      int index = 0; 
      foreach (System.Data.DataColumn column in Model.Data.Columns) 
      { 
       var field = model.Field(column.ColumnName, column.DataType); 
       if (index < 2) 
       { 
        field.Editable(false); 
       } 
       index++; 
      } 
     } 
    }) 
    .PageSize(20) 
.Create(update => update.Action("Create", "Home")) 
.Update(up => up.Action("UpdateRow", "Home")) 
) 
.Editable(editable => editable 
    .Mode(GridEditMode.InCell) 
    ) 
    .Selectable(selectable => 
    { 
     selectable.Mode(GridSelectionMode.Single); 
     selectable.Type(GridSelectionType.Row); 
    }) 
.Scrollable(scr => scr.Height(500)) 
.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)) 
    ) 

問題はラインフィールドにあります.Editable(false) - trueに設定しようとすると動作します。それは私のDataRowViewにIDの値を持っていないと言います - 私はかなり私のDataTableはIDと呼ばれる列を持っていると確信して、私は100 +時間のようにそれをチェックした。 正確なエラー:

+0

また、自動同期を有効にすることも重要です。 Kula

答えて

0

私は問題を抱えています。 私の関数が見えるところ私は

.Events(events => 
    { 
     events.Edit("edit_handler"); 
    }) 

を使用している: "EditableColumns" のラベルが編集可能である必要があり、すべての列名が含まれてい

<script type="text/javascript" language="javascript"> 

     function edit_handler(e) { 
      var grid = $('#MyGrid').data('kendoGrid'); 
      var fieldName = grid.columns[e.container.index()].field; 
      var columnsToEdit = document.getElementById('EditableColumns').textContent; 
      var arrayOfColumns = columnsToEdit.split(","); 
      if (arrayOfColumns.indexOf(fieldName.toUpperCase()) < 0) { 
       $("#MyGrid").data("kendoGrid").closeCell(e.container); 
      } 
     } 
    </script> 

を。

関連する問題