【问题标题】:Inline editing mode an dynamic object内联编辑模式动态对象
【发布时间】:2014-01-17 01:08:43
【问题描述】:

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

【问题讨论】:

    标签: asp.net-mvc dynamic grid kendo-ui inline-editing


    【解决方案1】:

    对于此类场景,仅支持 PopUp 编辑模式。使用动态数据或 DataTable 时不支持 InLine 和 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;
        }
      }
    })
    

    【讨论】:

      猜你喜欢
      • 2016-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-02
      相关资源
      最近更新 更多