修改Telerik MVC ComboBox中的默认筛选字段

时间:2017-09-23 02:45:36

标签: telerik-mvc

过滤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才会在他们选择项目后才显示在组合中显示的内容。

1 个答案:

答案 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>