2017-09-23 115 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>