2016-05-19 3 views
1

ich ein Diagramm Wrapper Tabelle und einen ‚Auswahl‘ Ereignis-Listener gebunden für Zeile des Abrufen von Daten wie folge:Abrufen von Zeilendaten aus Chart-Wrapper-Tabelle nach einer Steuer Wrapper Ändern

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); 
        }); 
}); 

Jetzt funktioniert dies gut, wenn Ich bin auf der ersten Seite der Tabelle oder wenn die vollständige Tabelle angezeigt wird. Sobald jedoch eine Sortierung/Filterung/Paginierung erfolgt ist, sind die abgerufenen Zeilendaten falsch, da die versteckten Zeilen nicht gezählt werden.

Beispiel: Ich habe eine Tabelle mit 10 Zeilen. In jedem gibt es einen String - 'row1', 'row2', 'row3' ... 'row10'. Ich benutze dann einen Kontrollwrapper, um die Tabelle so zu filtern, dass nur Reihen 5-10 sichtbar bleiben. Wenn ich jetzt auf Zeile 5 klicke, zählt es als Zeile 1 und ich bekomme die richtigen Daten nicht mehr.

Irgendwelche Ideen, wie ich dieses Problem beheben könnte?

Dank

Antwort

1

anstelle der Verwendung der ursprünglichen dataTable

das eine vom wird die gefiltert Datentabelle

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

Das hat den Trick! Danke vielmals. – rok

0

Ich hatte ein ähnliches Problem Rückkehr dieser

ChartWrapper verwenden , aber in meinem Fall benötigt, um den Wert in einer Spalte nicht di abzurufen gespreizt von der Tabelle im Chartwrapper. Glücklicherweise habe ich einen eindeutigen Index in meiner Tabelle, also habe ich diesen Wert gegriffen, dann die Zeilen der dataTable gefiltert, um den Zeilenindex zu finden, der den Wert enthält, dann diesen Wert in eine Ganzzahl umgewandelt und zuletzt die richtige Zeile ausgewählt, Nach der Auswahl, um den Wert auszuwählen, in diesem Fall eine URL zum Öffnen in einem neuen Fenster

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'); 
     } 
    } 
} 
Verwandte Themen