如果选定值不在源中,则DropDownList显示空值

时间:2017-10-19 02:45:19

标签: c# asp.net asp.net-core kendo-ui telerik

我想允许下拉列表显示之前选择但现在从下拉列表源中删除的值。而不是显示空白。下拉列表位于网格列中。

网格:

...
columns.ForeignKey(p => p.CurrentCategory, @Model.LookupCategory, "CategoryName", "CategoryName").Width(160);
...

模板编辑器

@using System.Collections

@(
 Html.Kendo().DropDownListFor(m => m)       
        .BindTo((SelectList)ViewData[ViewData.TemplateInfo.GetFullHtmlFieldName("") + "_Data"])
        .ValuePrimitive(true)        
        .AutoWidth(true)
)

因此,要更详细地解释:CurrentCategory列是文本列(不是id列),用户可以从LookupCategory中找到的项列表中进行选择。但是,如果从LookupCategory中删除某个项,则该值仍应显示在用户已为CurrentCategory选择该值的实例中。

目前,如果某行包含不在LookupCategory列表中的CurrentCategory值,则它将显示为空白。

也许我必须使用组合框?

1 个答案:

答案 0 :(得分:1)

您可以在视图模型中添加另一个属性AllCategory,其中包含LookupCategory和已删除项目的并集。 网格将使用此属性绑定菜单选项,LookupCategory属性将用作下拉源。

请参阅下文,了解如何在使用外键列模板时区分两者。

columns.ForeignKey(p => p.CurrentCategory, Model.AllCategory, "CategoryName", "CategoryName")
       .EditorViewData(new {lookupCategory = Model.LookupCategory})
.Width(160);


@using System.Collections

@(
 Html.Kendo().DropDownListFor(m => m)       
        .BindTo((SelectList) ViewData["lookupCategory"])        
        .ValuePrimitive(true)        
        .AutoWidth(true)
)