2

我有一个包含表格和字符串过滤框的仪表板。我想与表进行交互,以便能够选择行并从中检索相应的数据。

稍作更改后,我得到了 getSelection() 方法,但出现了另一个问题。使用下面的代码,我尝试过滤表,然后选择并获取行数据。一切似乎都很好,但是当我这样做时,过滤后的表行数字和实际数据中的行号不匹配。也就是说,我最终会参考预先过滤的表来提醒行数据...再次,任何建议都受到高度重视..谢谢..

       var dashboard, table, data;

  function drawVisualization() {

    var array = new Array(['ticker','time','bid','open','high','low','volume']);
    var ticker, time, bid, open, high, low, volume; 
        $.get('php/getdata.php', {input: 'stocklist'}, function(data1){

        $.each(data1, function(index, value){           
            ticker = value.ticker;
            time = value.time;
            bid = parseFloat(value.bid);
            open = parseFloat(value.open);
            high = parseFloat(value.high);
            low = parseFloat(value.low);
            volume = parseFloat(value.volume);
            array.push([ticker, time, bid, open, high, low, volume]);
        });

    data = google.visualization.arrayToDataTable(array);

    var stringFilter = new google.visualization.ControlWrapper({
      'controlType': 'StringFilter',
      'containerId': 'control1',
      'options': {
        'filterColumnLabel': 'ticker'
      }
    });

    table = new google.visualization.ChartWrapper({
      'chartType': 'Table',
      'containerId': 'chart1',
      'options': {'showRowNumber': false, 'height': '130px', 'width': '1000px'}
    });

    dashboard = new google.visualization.Dashboard(document.getElementById('dashboard'))
    dashboard.bind(stringFilter, table);
    dashboard.draw(data);

    google.visualization.events.addListener(table, 'select', selectHandler);
  }, "json");
  }

  function selectHandler() {
    var selection = table.getChart().getSelection();

  for (var i = 0; i < selection.length; i++) {
    var item = selection[i];
    if (item.row != null && item.column != null) {
        } else if (item.row != null) {
        stockID = data.getFormattedValue(item.row, 0);
        } else if (item.column != null) {
        stockID = data.getFormattedValue(0, item.column);
        }
    }
    if (stockID == '') {
    return;
    }       
alert(stockID);
}

  google.setOnLoadCallback(drawVisualization);
4

1 回答 1

1

我有一个类似的问题。应用过滤器后,您必须获取新的 DataTable。尝试改变

stockID = data.getFormattedValue(item.row, 0);

stockID = table.getDataTable().getFormattedValue(item.row, 0);

对于另一种情况也是如此。

干杯

于 2014-09-16T11:41:15.687 回答