2017-09-23 13 views
0

Telerik MVCコンボボックスをフィルターするとき、コントロールの既定値はDataTextFieldの値からのフィルター処理になります。 My 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> 
関連する問題