内联编辑模式 动态对象



>我创建了一个带有动态对象的网格,我想使用 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()
)

对于此类方案,仅支持弹出编辑模式。使用动态数据或 DataTable 时不支持内联和 InCell 编辑模式,因为 Grid 无法解析列的类型,因此无法创建正确的编辑器模板。您可以检查类型并手动分配模板作为解决方法。例如:

.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;
    }
  }
})

相关内容

  • 没有找到相关文章

最新更新