所以我有一个Kendo UI网格 我有一列是int
基本上有一个int列和
1意味着好, 2意味着最好, 3表示顶部,
Enum是正确使用的东西,但我不能(内部业务规则) 所以我需要制作一个自定义下拉列表来替换数字
在mvc中有两种方法可以做到这一点
一个是使用EditorTemplateName 另一个是使用ForeignKey
问题是EditorTemplateName仅在编辑模式下工作并在显示模式下显示数字, 和ForeignKey仅在显示模式下工作,并以编辑模式显示数字
答案 0 :(得分:0)
好了,经过一番努力,我想出了什么
我将ClientTemplate与EditorTemplateName一起使用
columns.Bound(c => c.Condition)
.EditorTemplateName("_ConditionDropDown")
.ClientTemplate("# if (Condition=== 1) {#" +
"good" +
"#} else if (Condition=== 2) {#" +
"best" +
"#} else if (Condition=== 3) {#" +
"top" +
"#}#");
它可以正常工作
我决定添加我用过的模板可能会帮助某人
@{
ViewBag.ConditionDropDownList = new List<SelectListItem>()
{
new SelectListItem { Value="0", Text="- All Conditions -" },
new SelectListItem { Value="1", Text="good" },
new SelectListItem { Value="2", Text="best" },
new SelectListItem { Value="3", Text="top" }
};
}
@(Html.Kendo().DropDownList()
.Name("Condition")
.DataTextField("Text")
.DataValueField("Value")
.BindTo((System.Collections.IEnumerable)ViewBag.ConditionDropDownList)
.Value("0")
)
答案 1 :(得分:0)
这种方式有时会起作用,如果不是第二个答案的话。
默认情况下,foreignkey列应使用下拉列表。如果项目中未使用下拉列表,则表明EditorTemplates文件夹中缺少GridForeignKey编辑器模板。如果是这种情况,您应该从[安装文件夹]&gt;中复制编辑器。包装纸&gt; aspnetmvc&gt; EditorTemplates&gt; razor文件夹到项目中的EditorTemplates文件夹。