kendo Grid中的Nullable Enum属性

时间:2015-08-26 16:21:32

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

我有几个属性是枚举,我想将它们绑定到网格。我正在使用以下代码

column.ForeignKey(p => p.<EnumpropertyName>, 
Model.<EnumList_As_SelectedItemList>, "Value", "Text");

EnumpropertyName可以为Num。

在另一栏中,我指的是属性的子属性

column.ForeignKey(p => p.<Enumproperty2Name>.<childProperyName>, 
Model.<AnotherEnumList_As_SelectedItemList>, "Value", "Text");

childProperyName可以为Num。

因为这是我的孩子对象

.Model(model =>
 {
    model.Id(p => p.InfoTableId);
    model.Field(p => p.<Enumproperty2Name>).DefaultValue(new      Enumproperty2Name());
  })

这不起作用,因为我为这些下拉列表添加了新行和选择值,选择后会丢失值。但是,如果我删除nullable并让它们成为常规枚举属性,它们就可以工作。

如何使可空的枚举在kendo网格中工作。

由于

2 个答案:

答案 0 :(得分:2)

要在Kendo Grid中添加下拉列表,请尝试以下操作。

columns.ForeignKey(p => p.ExamDateStatus, (System.Collections.IEnumerable)ViewData["ExamStatus"], "Value", "Text")
.Title("Status").EditorTemplateName("ComboForeignKey").Width(100); 

&#34; ComboForeignKey&#34;是一个部分视图,它位于Views \ Shared \ EditorTemplates文件夹中。它的内容必须类似于以下内容。

@model object

@(
 Html.Kendo().DropDownListFor(m => m).OptionLabel("Select Below...")
 .HtmlAttributes(new { data_value_primitive = "true"})
 .BindTo((SelectList)ViewData[ViewData.TemplateInfo.GetFullHtmlFieldName("") + "_Data"])
)

答案 1 :(得分:2)

我在将值绑定到可以为空的Enum属性时遇到了类似的问题。我设法用chamara的答案解决了这个问题。

最重要的一点是:

 .HtmlAttributes(new { data_value_primitive = "true"})

它强制Kendo编辑器绑定到原始值类型(从而将简单的数字值发送到您的服务器)而不是

System.Nullable<YourEnumType>

该值类型稍后会被默认的MVC模型绑定器成功反序列化并转换为您的枚举值。与前一个选项(没有data_value_primitive属性)不同,在这种情况下,接收的值只是null。