【问题标题】:Nullable Enum property in kendo Grid剑道网格中的可空枚举属性
【发布时间】:2015-08-26 16:21:31
【问题描述】:

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

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

EnumpropertyName 是可为空的 Enum。

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

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

childProperyName 是可为空的枚举。

因为这是我拥有的子对象内部

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

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

如何使可空枚举在剑道网格中工作。

谢谢

【问题讨论】:

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


    【解决方案1】:

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

    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"])
    )
    

    【讨论】:

      【解决方案2】:

      我在值绑定到可为空的 Enum 属性时遇到了类似的问题。我设法使用 chamara 的答案修复它。

      最重要的一行是这一行:

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

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

      System.Nullable<YourEnumType>
      

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

      【讨论】:

      • 设置 data_value_primitive 也解决了我的问题,但我没有使用枚举。看起来 Kendo 或活页夹可能会遇到许多可为空的类型。我的是一个int?财产。
      猜你喜欢
      • 2014-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-21
      • 1970-01-01
      • 1970-01-01
      • 2014-08-30
      相关资源
      最近更新 更多