Telerik Grid с идентичными названиями свойств - PullRequest
0 голосов
/ 05 мая 2011

Я работаю над медицинским приложением, где сетка должна отображать описание ICD, а также описание соответствующей категории HCC. Типы ICD и HCC выглядят так:

public class ICD {
    public String Code { get; set; }

    public String Description { get; set; }

    public HCC HCC { get; set; }
}

public class HCC {
    public Int32 ID { get; set; }

    public String Description { get; set; }
}

Когда я связываю сетку расширений Telerik MVC со списком объектов ICD, я настраиваю столбцы следующим образом:

this.Html.Telerik().Grid(this.Model.ICDs)
    .Name("ICDGrid")
    .DataKeys(keys => keys.Add(icd => icd.Code))
    .DataBinding(binding => {
        binding.Ajax().Select(this.Model.AjaxSelectMethod);
        binding.Ajax().Update(this.Model.AjaxUpdateMethod);
    })
    .Columns(columns => {
        columns.Bound(icd => icd.ICDType.Name).Title("ICD 9/10");
        columns.Bound(icd => icd.Code);
        columns.Bound(icd => icd.Description);
        columns.Bound(icd => icd.HCC.Description).Title("HCC Category")
        columns.Command(commands => commands.Delete()).Title("Actions").Width(90);
    })
    .Editable(editing => editing.Mode(GridEditMode.InCell).DefaultDataItem(new ICD()))
    .ToolBar(commands => {
        commands.Insert();
        commands.SubmitChanges();
    })
    .Sortable()
    .Filterable()
    .Pageable(paging => paging.PageSize(12))
    .Render();

Проблема в том, что как ICD, так и HCC имеют свойства с именем «Описание», и я не могу это контролировать. Есть ли способ сказать Telerik называть их по-разному в генерируемом им JavaScript? Что-то вроде ICDDescription и HCCDescription?

1 Ответ

1 голос
/ 06 мая 2011

В настоящее время вы не можете использовать псевдоним для свойств.Что вы можете сделать, это создать объект ViewModel с уникальным именем свойств.Затем привяжите сетку к объекту ViewModel.Вот фрагмент кода:

public class ICDViewModel
{
   public string Description
   {
      get;
      set;
   }
   public string HCCDescription
   {
      get;
      set;
   }
   // The rest of the properties of the original ICD class
}

Затем вам нужно изменить тип Model.ICD для использования ICDViewModel.Вы можете использовать метод расширения Select для сопоставления ICD с ICDViewModel:

Model.ICDs = icds.Select(icd => new ICDViewModel 
{ 
   Description = icd.Description,
   HCCDescription = icd.HCC.Description
   /* set the rest of the ICD properties */
});
...