Telerik Grid具有相同的属性名称

时间:2011-05-05 15:58:09

标签: asp.net-mvc-2 telerik-grid telerik-mvc

我正在研究一种医疗应用,其中网格需要显示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都有名为“Description”的属性,我无法控制它。有没有办法告诉Telerik在它生成的JavaScript中将它们称为不同的东西?像ICDDescription和HCCDescription这样的东西?

1 个答案:

答案 0 :(得分:1)

目前,您无法为属性设置别名。您可以做的是创建一个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 */
});