2012-02-08 9 views
0

私は、テーブルの視覚化のためのすべてのデータを含むDataTableオブジェクトを持っています。Googleの視覚化:DataTableオブジェクトのユーザー検索を提供する方法

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

DataTableではgetFilteredRowsメソッドが提供されていますが、これは十分柔軟ではありません(たとえば、各列のAND条件は単純に機能しません)。

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

答えて

0

答えは、今のところはnoのようです。私は、この恐ろしく非効率的な機能をストップギャップとして思いついた:

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; 
    } 
関連する問題