2015-06-10 2 views
1

У меня есть сетка кендо. Эта модель просмотра сетки кендо содержит объект словаря, который имеет минимум 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; } 
} 

Спасибо заранее.

ответ

0

Ваш вопрос похож на this, за исключением того, что вам нужен динамический. Ваш:

A Словацкий объект, который имеет не менее 5 единиц. Кстати, эти предметы должны быть динамические. пункты иногда могут быть более 5.

Для вашего случая, я думаю, вы должны знать все поле, которое может быть сохранено в вашем словаре. Например ваш словарь может имеет максимум из 10 поля, как:

  1. field1, field2, field3, Field4, Field5, field6, field7, field8, field9, field10.
  2. Затем определите вашу схему, чтобы сделать одно и то же поле уровня (не вложенное), так как kendo не поддерживает вложенное поле, как словарь. Заполните их соответствующим образом, добавить, если условие для обработки пустого/нуля (это потому, что ваш словарь является динамическим)

Взгляни на этом dojo как пример

0

Если список возможных типов комиссионных доступен, вы можете динамически определить столбец на каждого типа комиссии:

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

Смежные вопросы