2016-05-19 19 views
1

を変更した後、私はチャートラッパーテーブルと、次のように行データを取得するためにそれに結合された「選択」イベントリスナーを持つチャートラッパーテーブルから行データの取得:は、制御ラッパー

var table = new google.visualization.ChartWrapper({ 
        'chartType': 'Table', 
        'containerId': 'tableDiv', 
        'options': { 
         'allowHtml': true, 
         'page': 'enable', 
         'width':'100%', 
         'height':'270px', 
         'pageSize': 10, 
        } 
       }); 

google.visualization.events.addListener(table, 'ready', function() { 

        google.visualization.events.addListener(table, 'select', function(){ 
           var selection = table.getChart().getSelection(); 
           var row = selection[0].row; 

           var x=dataTable.getValue(row, 1); 
           var y=dataTable.getValue(row,3); 
        }); 
}); 

今は、この時に正常に動作します私はテーブルの最初のページか、フルテーブルが表示されています。しかしながら、いくつかのソート/フィルタリング/ページ付けが行われるとすぐに、隠された行がカウントされないため、検索された行データは偽である。

例:10行のテーブルがあります。それぞれには、 'row1'、 'row2'、 'row3' ... 'row10'という文字列があります。次に、コントロールラッパーを使用してテーブルをフィルタリングし、行5-10だけが表示されるようにします。行5をクリックすると、行1としてカウントされ、正しいデータが得られなくなります。

どのように私はこの問題を解決することができます任意のアイデア?私は同様の問題があった

おかげ

答えて

1

の代わりに、これはフィルタデータテーブル

google.visualization.events.addListener(table, 'select', function(){ 
    var selection = table.getChart().getSelection(); 
    var row = selection[0].row; 

    var x=table.getDataTable().getValue(row, 1); 
    var y=table.getDataTable().getValue(row,3); 
}); 
+0

それはトリックでした!どうもありがとう。 – rok

0

を返しますChartWrapper

から1を使用し、元のdataTable

を使用してしかし、私の場合、diではない列の値を取得する必要がありましたChartwrapperのテーブルに広がった。幸いなことに私のテーブルにはユニークなインデックスがあるので、この値をつかんでdataTableの行をフィルタリングして値を含む行インデックスを見つけ、この値を整数に変換してから最後にこれを使って正しい行を選択し、値を選択した後、この場合は新しいウィンドウで開くURL

var view = new google.visualization.DataView(dataTable); 
view.setRows(view.getSortedRows({column: 11, desc: true})); 
view.setColumns([11,0,2,3,4,5,6,7,8,9]); 

//create the handler for the selection on the table 
google.visualization.events.addListener(table, 'select', selectHandler); 

    function selectHandler() { 
    var selection = table.getChart().getSelection(); 
    for (var i = 0; i < selection.length; i++) { 
     var item = selection[i]; 
     if (item.row != null) { 
      var id = table.getDataTable().getValue(item.row,0); 
      var urlRow = dataTable.getFilteredRows([{column: 11, value: id }]); 
      urlRow = parseInt(urlRow); 
      var url = dataTable.getFormattedValue(urlRow, 10); 
      window.open(url,'_blank'); 
     } 
    } 
}