0

テーブル ビジュアライゼーションのすべてのデータを含む DataTable オブジェクトがあります。

テーブルのユーザーに検索機能を提供し、検索クエリに基づいてテーブルから行をフィルタリングしてから、一致した行で視覚化を更新したいと考えています。

DataTable はgetFilteredRowsメソッドを提供しますが、これでは十分な柔軟性が得られません (たとえば、各列の AND 条件は機能しません)。

私のオプションは何ですか?すべてのデータはクライアント側に既に存在するため、JS コードを使用して操作できるはずです。これを可能にするライブラリ機能はありますか?

4

1 に答える 1

0

今のところ、答えはノーのようです。私はこのひどく非効率的な関数を一時的なギャップとして思いついた:

  function search(query, table) {

      if(query == '') {
          return table;
      }

      var newTable = table.clone();
          newTable.removeRows(0, table.getNumberOfRows());
      var keepRows = [];
      for(i = 0; i < table.getNumberOfRows(); i++) {
          for (j = 0; j < table.getNumberOfColumns(); j++) {
                if(table.getValue(i, j).toLowerCase().match(query.toLowerCase())) {
                    keepRows.push(i);
                    break;
                }
        }
      }

      for(r = 0; r < keepRows.length; r++) {
            var row = []
          for(c = 0; c < table.getNumberOfColumns(); c++ ) {
              row.push(table.getValue(keepRows[r], c));
          }

          newTable.addRow(row);
      }

      return newTable;
  }
于 2012-02-12T23:09:26.267 に答える