2016-04-06 6 views
0

私は剣道UIを使ってデータを表示しています。私は、オブジェクト配列オブジェクト配列を反復処理して値をフィルタに配置するにはどうすればよいですか?

Object {logic: "and", filters: Array[3]} 
filters:Array[3] 
0:Object 
    field:"CheckDate" 
    operator:"gte" 
    value:Fri Jan 01 2016 00:00:00 GMT-0500 (Eastern Standard Time) 
1:Object 
    field:"CheckDate" 
    operator:"lte" 
    value:Tue Jan 31 2017 00:00:00 GMT-0500 (Eastern Standard Time) 

私は何を把握することはできませんがどのようにこの配列をループすると剣道グリッドのためのフィルタの内の値を使用しているで使用するフィルタを取得することができています。フィルターコードは次のようになります。

grid.dataSource.filter({ 
      logic: "and", 
      filters: [ 
      { field: "EmployeeName", operator: "contains", value: val } 
     ] 
    }); 

フィルターを適用するには、配列内の各項目に行を付ける必要があります。

+0

したがって、同じ列に対して複数の*フィルタを同時に使用していますか? – cassandrad

答えて

0

Javascriptをfor ... inはあなたがC#やJavaコードを記述するために使用されている場合は非常に奇妙である振る舞いを持っているので、私はそれを期待通りに動作jQuery.eachを使用することを好みます。

$.each(yourObject.filters, function(index, element){ 
    grid.dataSource.filter({ 
      logic: "and", 
      filters: [ 
       { field: element[0], operator: element[1], value: element[2] } 
      ] 
    }); 
}); 
0

オブジェクトObject {logic: "and", filters: Array[3]}の構造は、剣道データソースがフィルタリングを行うことを期待するもの、実際にあります。次のようにしかし、手動でこれを行うには、あなたはそう常に作成し、リモートエンドポイントを複数回呼び出すようループ内grid.dataSource.filter()を呼び出していないことを覚え、最後に、

var generateFilterArray = function (yourFilterObject) { 
    var filters = [] 
    for (var i = 0; i < yourFilterObject.filters.length; i++) { 
      filters.push({ 
       field: yourFilterObject.filters[i].field, 
       operator: yourFilterObject.filters[i].operator, 
       value: yourFilterObject.filters[i].value 
      });    
    } 

    return { 
     logic: yourFilterObject.logic, 
     filters: filters 
    }; 
} 

grid.dataSource.filter(generateFilterArray(yourFilterObject)) 

を何かを試みることができます最初にオブジェクトをフィルタリングし、それを上記のように適用します。

関連する問題