2017-12-04 13 views
1

剣道グリッドカスタムフィルタのフィルタ値をプログラムで設定しようとしています。私が適用された場合剣道グリッドカスタムフッタフィルタ値をプログラムで設定する

function getFieldFilter() { 
    return { 
    cell: { 
     template: function (args) { 
     var element = args.element; 

     element.kendoComboBox({ 
      dataSource: { 
      transport: { 
       read: 'api/Items' 
      } 
      }, 
      valuePrimitive: true, 
      dataTextField: 'Description', 
      dataValueField: 'Code' 
     }); 
     }, 
     showOperators: false 
    } 
    }; 
} 

:次のフィルタで

{ 
    width: '140px', 
    title: 'MyFieldTitle', 
    field: 'MyField', 
    filterable: getFieldFilter() 
} 

:オプションがどのように見える

gridOptions.dataSource.filter = [ 
    { 
     field: 'MyField', 
     operator: 'eq', 
     value: newTextValue 
    } 
]; 

グリッドの私のフィールド定義:ように私は私の新しいフィルタ値を適用しています上記のようにフィルターを適用すると、列内のkendoComboBoxをクリックしてもう一度その外側をクリックした後にのみ機能します。 私の最初の考えは、剣道のグリッドはdataValueFieldを適用せず、dataTextFieldを設定するだけでした。剣道グリッドがサーバーに送信しているリクエストをチェックしていたとき、kendoComboBox自体(テキスト)に格納されている値に送信されていて、その背後の値ではありませんでした。

UIからkendoComboBoxで何かを選択すると、すべてうまく動作します。しかし、私が上記のようにプログラムで設定した場合、それはしません。

kendoComboBoxの内部値をリフレッシュするには、何らかの状態をリフレッシュする必要がありますか?この問題を解決するにはどうすればよいですか?

EDIT: グリッドからkendoComboboxの値を取得しようとしています。

var currentlyAppliedFilters = grid.dataSource.filter().filters; 
for (var filter of currentlyAppliedFilters) { 
    if (filter.field === 'MyField') { 
     var currentlyApplied = filter.value; 
    } 
} 

したがって、上記のコードは、私にkendoCombobox内の項目のDescription性質を与えるだろうが、私は実際にそれをCodeプロパティを取得したいのか。

答えて

0

最初にdataSourceにフィルタがない場合、セルフィルタにはオプションラベルが必要です。 1番目の値が選択されていないようにします。

例:dojo example with optionLabel

args.element.kendoDropDownList({ 
           dataSource: args.dataSource, 
           optionLabel: "Select a color...", 
           dataTextField: "color", 
           dataValueField: "color", 
           valuePrimitive: true 
          }); 

あなたがバインドする際、デフォルトのフィルタは、データソースに追加すべきフィルタリングするグリッドが必要な場合は

例:dojo example with DataSource Filter

dataSource: { 
      data:[ { color: "#ff0000", size: 30 }, { color: "#000000", size: 33 }] , 
      filter: { field: "color", operator: "eq", value: "#ff0000" } 
        } 

・ホープ、この助けてください。

+0

私の場合は、別の 'dataTextField'と' dataValueField'を使用しているか、またはテキスト入力で 'kendoDropDownList'を持っているために違うようです。 –

関連する問題