Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 剑道网格中的字典动态绑定_C#_Asp.net Mvc_Dictionary_Kendo Ui_Kendo Grid - Fatal编程技术网

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

C# 剑道网格中的字典动态绑定,c#,asp.net-mvc,dictionary,kendo-ui,kendo-grid,C#,Asp.net Mvc,Dictionary,Kendo Ui,Kendo Grid,我有剑道格网。这个剑道网格的视图模型包含一个字典对象,它至少有5个条目。顺便说一下,这些项目应该是动态的。项目有时可能超过5个 因此,必须做到: 我想展示这5个项目,就像每个单独的列一样 我想通过ajaxcall(在剑道读取函数中)向这个网格馈电 我想在线编辑这个网格 @(Html.Kendo().Grid()) .名称(“grd_关税”) .列(列=> { columns.Bound(c=>c.Commissions); Command(c=>{c.Edit().Text(“Edit”)

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

因此,必须做到:

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

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

  • 我想在线编辑这个网格


@(Html.Kendo().Grid())
.名称(“grd_关税”)
.列(列=>
{
columns.Bound(c=>c.Commissions);
Command(c=>{c.Edit().Text(“Edit”);}).Width(200);
})
.ToolBar(t=>t.Create().Text(“New”).HtmlAttributes(New{@id=“newTariffDetail”}))
.Editable(e=>e.Mode(GridEditMode.InLine))
.resizeable(resize=>resize.Columns(true))
.Reorderable(reorder=>reorder.Columns(true))
.可滚动(s=>s.Height(“自动”))
.Pageable(x=>x.Enabled(true).按钮计数(ReportPageSize).刷新(true))
.AutoBind(假)
.DataSource(数据绑定=>数据绑定
.Ajax()
.PageSize(默认页面大小)
.Model(m=>m.Id(t=>t.TariffId))
.Read(a=>a.Action(MVC.tarriff.ActionNames.GetTariffDetails,MVC.tarriff.Name))
.Update(Update=>Update.Action(MVC.Tariff.ActionNames.UpdateTariffDetails,MVC.Tariff.Name))
.创建(“创建”、“关税”)
.Events(Events=>Events.Error(“grd\u TariffDetail\u OnError”))
)
)

我的字典对象:

public class TariffDetailViewModel
{
   public Dictionary<string, object> Commissions { get; set; }
}
公共类TariffDetailViewModel
{
公共字典{get;set;}
}

提前谢谢。

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

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

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

  • 场1,场2,场3,场4,场5,场6,场7,场8, 第九场,第十场
  • 然后定义您的模式以生成相同级别的字段(不是嵌套的),因为kendo不支持像dictionary这样的嵌套字段。相应地填充它们,添加if条件来处理empty/null(这是因为您的字典是动态的)

  • 以此为例

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

    @(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);
      })
    
    @(Html.Kendo().Grid())
    .名称(“grd_关税”)
    .列(列=>
    {
    foreach(Model.CommissionTypes中的var CommissionType)
    {
    columns.Bound(typeof(double),“Commissions['”+commissionType.Name+“'].Value”)
    .标题(佣金类型.名称);
    }
    Command(c=>{c.Edit().Text(“Edit”);}).Width(200);
    })
    
    在他们的网站上有一个类似的问题:

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