2014-01-17 3 views
3

동적 객체를 사용하여 격자를 만들었으며 GridEditMode.InLine을 사용하여 데이터를 업데이트하고 추가하고 싶습니다. 팝업 모드가 작동되지만 InCell 및 인라인으로 나는 다음과 같은 오류를 받고 있어요 :인라인 편집 모드 동적 객체

필드 액세스, 속성 액세스, 단일 차원 배열 인덱스, 또는 단일 매개 변수를 사용자 정의 인덱서에서만 사용할 수 있습니다

템플릿 표현.

나는 뭔가를 놓친가요?

사용자 지정 서식 파일을 사용하려고했지만 여전히 동일한 오류가 발생합니다. 단지 팝업 편집 모드가 지원되는 등의 시나리오에 대한 당신의 도움이

@(Html.Kendo().Grid<dynamic>() 
    .Name("Grid") 
    .DataSource(dataSource => dataSource 
     .Ajax() 
     .ServerOperation(true) 
     .Model(cfg => 
     { 
      cfg.Id("SsdID"); 
     foreach (var property in Model.PropertyDescriptors) 
      { 
       cfg.Field(property.Name, property.DataType); 
      } 
     }) 
     .Read(cfg => cfg.Type(HttpVerbs.Post) 
     .Action("ReadDataForDefinition", "ManualDataEntry", 
       new { id = Model.LDefinitionId })) 
     .Update(u => u.Type(HttpVerbs.Post).Action("UpdateDataForDefinition","ManualDataEntry", 
       new { id = Model.LDefinitionId })) 
     .Create(u => u.Type(HttpVerbs.Post).Action("Create", "ManualDataEntry", 
       new { id = Model.LDefinitionId })) 
     ) 
     .Resizable(resizing => resizing.Columns(true)) 
     Columns(columns => 
     { 
     foreach (var property in Model.PropertyDescriptors.Where(desc => desc.DisplayOrder.HasValue)) 
     { 
      var binding = columns.Bound(property.DataType, property.Name); 
      if (property.DataType == typeof(DateTime) || property.DataType ==typeof(DateTime?)) 
      binding.Format("{0:d}"); 
      binding.Column.Title = property.Label; 
      } 
     columns.Command(command => 
     { 
      command.Edit(); 
      command.Destroy(); 
     }); 
    }) 
    .ToolBar(toolbar => { toolbar.Create(); }) 
    .Pageable(paging => 
    { 
     paging.ButtonCount(10); 
     paging.PreviousNext(true); 
     paging.PageSizes(true); 
    }) 
    .Editable(edit => edit.Mode(GridEditMode.InLine)) 
    .Sortable() 
    .Scrollable() 
    .Filterable() 
) 

답변

1

에 대한

감사합니다. 그리드에서 열 유형을 확인할 수 없기 때문에 동적 데이터 또는 DataTable을 사용할 때 InLine 및 InCell 편집 모드가 지원되지 않으므로 적절한 편집기 템플릿을 만들 수 없습니다. 대안을 찾기 위해 유형을 확인하고 템플릿을 수동으로 할당 할 수 있습니다. 예 :

.Columns(columns => 
{ 
    foreach (System.Data.DataColumn column in Model.Columns) 
    { 
    switch (column.DataType.ToString()) 
    { 
     case "System.Int16": 
     case "System.Int32": 
     case "System.Int64": 
      columns.Bound(column.ColumnName).EditorTemplateName("Integer"); 
      break; 
     case "System.Decimal": 
     case "System.Double": 
     case "System.Float": 
      columns.Bound(column.ColumnName).EditorTemplateName("Number"); 
      break; 
     case "System.String": 
      columns.Bound(column.ColumnName).EditorTemplateName("String"); 
      break; 
     default: 
      //etc etc 
      break; 
    } 
    } 
})