过滤Telerik MVC ComboBox时,控件默认从DataTextField中的值进行过滤。我的ComboBox绑定到具有多个字段的Data,我用它来显示带有自定义模板的表。我知道在多个字段上没有开箱即用的过滤解决方案,但我想知道是否有办法在我合并多个值的字段上运行过滤器。
这是我的组合框:
@(Html.Kendo().ComboBoxFor(m => m.InputData.PublicationId)
.DataTextField("ID")
.DataValueField("ID")
.BindTo(Model.Publications)
.Filter(FilterType.Contains)
.TemplateId("pubListItemTemplate")
.HeaderTemplateId("pubListHeaderTemplate")
)
我的数据结构如下:
{ ID: "AJ", Description: "American Journal", Combined: "AJ American Journal" }, etc...]
这里的问题是,如果用户键入“AJ”,过滤器将找到上面的示例,但如果他们输入“American”,则不会;因为指定的DataTextField正在过滤ID。
我需要在名为“Combined”的字段上进行过滤,但我仍然需要使用“ID”作为DataTextField,这样ID才会在他们选择项目后才显示在组合中显示的内容。
答案 0 :(得分:0)
这是在Telerik论坛上提供给我的,我已经确认它解决了我的问题:
@(Html.Kendo().ComboBoxFor(m => m.InputData.PublicationId)
.DataTextField("ID")
.DataValueField("ID")
.Events(events => events.Filter("onPubFilter"))
.BindTo(Model.Publications)
.Filter(FilterType.Contains)
.TemplateId("pubListItemTemplate")
.HeaderTemplateId("pubListHeaderTemplate")
)
<script>
function onPubFilter(ev) {
var filterValue = ev.filter.value;
ev.preventDefault();
this.dataSource.filter({
filters: [
{
field: "Combined",
operator: "contains",
value: filterValue
}
]
});
}
</script>