网格中的Telerik kendo ui mvc下拉列表处于编辑模式时,并在显示模式下显示值

时间:2015-08-05 19:43:24

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

所以我有一个Kendo UI网格 我有一列是int

基本上有一个int列和

1意味着好, 2意味着最好, 3表示顶部,

Enum是正确使用的东西,但我不能(内部业务规则) 所以我需要制作一个自定义下拉列表来替换数字

在mvc中有两种方法可以做到这一点

一个是使用EditorTemplateName 另一个是使用ForeignKey

问题是EditorTemplateName仅在编辑模式下工作并在显示模式下显示数字, 和ForeignKey仅在显示模式下工作,并以编辑模式显示数字

2 个答案:

答案 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文件夹。