1

URL パラメーターに基づいて、複数の iggrid 列にフィルターを適用したいと考えています。次のコードは、最後のフィルターのみを表示します。以前に設定されたフィルター条件を無視または上書きします。

  //value is multiple columns filter details separated by ;
  var columns = value.split(";")
  for (i = 0; i < columns.length; i++) {
   state_grid.igGridFiltering("filter", [{ fieldName: columns[i][0], expr: columns[i][2], cond: columns[i][1] }]);
  }

このiggrid フォーラムを調べていたところ、次のように複数のフィルターを適用できることがわかりました。

 $("#grid1").igGridFiltering("filter", [
 {fieldName: "MakeFlag", expr: true, cond: "true" , logic: "AND"},
 {fieldName: "ProductID", expr: 3, cond: "equals", logic: "OR"}
 ]);

フィルター条件をハードコードすると、正常に機能し、すべての列にフィルター テキストが表示されます。私の質問は、これを jQuery で動的に生成して igGridFiltering イベントに渡す方法です。これらの条件は、URL クエリ文字列に基づいてロードする必要があります。次のようにできますか?

 var expression='';
 for (i = 0; i < columns.length; i++) {
    var vl = columns[i].split('_');
    expression += '{ fieldName:'+ vl[0]+', expr:'+ vl[2]+', cond:'+ vl[1]+' },';
 }
 state_grid.igGridFiltering("filter", [expression]);

これについて助けてください。

4

1 に答える 1

1

最後に、いくつかの試行で答えを見つけました。基本的に、多次元配列を作成し、それをグリッド フィルタリング イベントに渡しました。コードは次のとおりです。

  var columns = value.split(";"), i, expression = [];

    for (i = 0; i < columns.length; i++) {
        var data = {},
            vl = columns[i].split('_');

        data.fieldName = vl[0];
        data.expr = vl[2];
        data.cond = vl[1];
        expression.push(data);
    }

    state_grid.igGridFiltering("filter", expression);

このコードは問題なく動作しているようです。誰かがより良い解決策を見つけたら、私に知らせてください。

ありがとう。

于 2015-02-27T16:31:35.500 に答える