2017-09-23 118 views
0

当过滤Telerik MVC组合框时,控件默认为从DataTextField中的值进行过滤。我的ComboBox绑定到具有多个字段的数据,我正在使用这些字段在具有自定义模板的表中显示。我知道,没有现成的解决方案来过滤多个字段,但我想知道是否有办法在组合多个值的字段上运行筛选器。修改Telerik MVC组合框中的默认过滤器字段

这里是我的组合框:

@(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”过滤器的用户类型会发现上面的例子中,但如果他们输入“美国”,它不会;因为指定的DataTextField正在过滤ID。

我需要它来过滤名为“Combined”的字段,但我仍然需要使用“ID”作为DataTextField,以便ID只是在组合中选择了项目后显示的内容。

回答

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>