kendo 网格中的可空枚举 属性

Nullable Enum property in kendo Grid

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

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

枚举属性名称可为空枚举。

在另一专栏中,我参考了 child 属性 of 属性

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

childProperyName 是可为空的枚举。

因为里面有childobject我有

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

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

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

谢谢

要在 Kendo 网格中添加下拉菜单,请尝试以下操作。

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

"ComboForeignKey" 是位于 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"])
)

我在将值绑定到可为 null 的枚举 属性 时遇到了类似的问题。我设法使用查马拉的回答修复了它。

最重要的一行是:

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

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

System.Nullable<YourEnumType>

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