Google可视化:如何在DataTable对象上提供用户搜索?

时间:2012-02-08 02:13:50

标签: javascript google-visualization jsapi

我有一个DataTable对象,其中包含表格可视化的所有数据。

我想为表的用户提供搜索工具,根据搜索查询过滤表中的行,然后使用匹配的行更新可视化。

DataTable提供getFilteredRows方法,但这不够灵活(例如,每列的AND条件根本不起作用)。

我有什么选择?所有数据都已存在于客户端,因此我应该能够使用JS代码对其进行操作。是否有库功能可以让我这样做?

1 个答案:

答案 0 :(得分: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;
  }