【问题标题】:Dictionary Binding in Kendo Grid Dynamically动态剑道网格中的字典绑定
【发布时间】:2015-08-26 10:23:35
【问题描述】:

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

所以,必须这样做:

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

  • 我想通过 ajaxcall(在 kendo 读取函数中)输入这个网格。

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


@(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; }
}

提前致谢。

【问题讨论】:

    标签: c# asp.net-mvc dictionary kendo-ui kendo-grid


    【解决方案1】:

    您的问题类似于this,只是您想要一个动态的问题。你的:

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

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

    1. field1、field2、field3、field4、field5、field6、field7、field8、 字段 9,字段 10。
    2. 然后定义您的架构以创建相同级别的字段(不嵌套),因为 kendo 不支持像字典这样的嵌套字段。相应地填充它们,添加 if 条件以处理空/null(这是因为您的字典是动态的)

    dojo 为例

    【讨论】:

      【解决方案2】:

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

      @(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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-11-07
        • 2017-09-26
        • 1970-01-01
        • 2015-11-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多