剑道网格中的字典动态绑定

本文关键字:字典 动态绑定 网格 | 更新日期: 2023-09-27 17:55:32

我有一个剑道网格。此剑道网格的视图模型包含一个至少包含 5 个项的字典对象。顺便说一下,这些项目应该是动态的。项目有时可能超过 5 个。

所以,必须做:

  • 我想像每个单独的列一样显示这 5 个项目

  • 我想通过 ajaxcall(在剑道读取函数中)馈送这个网格。

  • 我想内联编辑这个网格。


@(Html.Kendo().Grid<TariffDetailViewModel>()
  .Name("grd_Tariff")
  .Columns(columns =>
  {
      columns.Bound(c => c.Commissions);
      columns.Command(c => { c.Edit().Text("Edit"); }).Width(200);
  })
  .ToolBar(t => t.Create().Text("New").HtmlAttributes(new {@id = "newTariffDetail"}))
  .Editable(e => e.Mode(GridEditMode.InLine))
  .Resizable(resizing => resizing.Columns(true))
  .Reorderable(reorder => reorder.Columns(true))
  .Scrollable(s => s.Height("auto"))
  .Pageable(x => x.Enabled(true).ButtonCount(ReportPageSize).Refresh(true))
  .AutoBind(false)
  .DataSource(dataBinding => dataBinding
      .Ajax()
      .PageSize(DefaultPageSize)
      .Model(m => m.Id(t => t.TariffId))
      .Read(a => a.Action(MVC.Tariff.ActionNames.GetTariffDetails, MVC.Tariff.Name))
      .Update(update => update.Action(MVC.Tariff.ActionNames.UpdateTariffDetails, MVC.Tariff.Name))
      .Create("Create", "Tariff")
      .Events(events => events.Error("grd_TariffDetail_OnError"))
  )

我的字典对象:

public class TariffDetailViewModel
{
   public Dictionary<string, object> Commissions { get; set; }
}

提前谢谢。

剑道网格中的字典动态绑定

你的问题与此类似,除了你想要一个动态的问题。你:

一个至少包含 5 个项的字典对象。顺便说一下,这些项目应该是动态的。项目有时可能超过 5。

对于您的情况,我认为您必须知道字典中可能存储的所有字段。例如,您的字典可能最多有 10 个字段,例如:

    字段 1, 字段 2, 字段 3, 字段 4, 字段 5, 字段 6, 字段
  1. 7, 字段 8,字段 9,字段 10。
  2. 然后定义您的架构以创建相同级别的字段(非嵌套),因为 kendo 不支持像字典这样的嵌套字段。相应地填写它们,添加 if 条件来处理空/空(这是因为您的字典是动态的)

以这个道场为例

如果有可能的佣金类型列表,您可以为每个佣金类型动态定义一列:

@(Html.Kendo().Grid<TariffDetailViewModel>()
  .Name("grd_Tariff")
  .Columns(columns =>
  {
      foreach(var commisionType in Model.CommissionTypes)
      {
          columns.Bound(typeof(double), "Commissions['" + commissionType.Name + "'].Value")
              .Title(commissionType.Name);
      }
      columns.Command(c => { c.Edit().Text("Edit"); }).Width(200);
  })

他们的网站上有一个类似的问题:http://www.telerik.com/forums/dictionary-keys-binding