2014-05-20 2 views
0

J'essaie de créer un gestionnaire d'événements entre les lignes et les points de données. Je reçois actuellement une erreur:addListener Evénement - erreur

TypeError: line.getSelection is not a function.

Je suis peu incertain, comment ajouter cette fonctionnalité ou si je vais peut-être mal:

 var table = new google.visualization.ChartWrapper({ 
      'chartType': 'Table', 
      'containerId': 'TableContainer', 
      'options': { 'height': '25em', 'width': '80em' } 
     }); 

     new google.visualization.Dashboard(document.getElementById('PieChartExample')).bind([myIdSlider], [line, table]).draw(data); 
     table.draw(data, { showRowNumber: true }); 

     google.visualization.events.addListener(line, 'select', function() { 
      table.setSelection([{ row: line.getSelection()[0].row }]); 
     }); 

     google.visualization.events.addListener(table, 'select', function() { 
      line.setSelection(table.getSelection()); 
     }); 

     // table.setSelection([{ row: chart.getSelection()[0].row }]); 


    } 

Toute aide serait très apprécié. Merci beaucoup.

+2

Je ne peux pas voir où la variable de ligne est déclarée. – Ksv3n

+0

Aucune ligne déclarée. Cependant, essayez window.getSelection() –

+0

Merci à tous pour votre réponse. J'ai essayé d'ajouter la ligne 'window', mais elle produit la même réponse d'erreur que 'line.window' indéfini. Je reçois également une autre erreur d'avertissement - Chaîne vide passée à getElementById(). Cet avertissement est lié à l'erreur, je crois, car il incrémente chaque fois que je clique sur les lignes du tableau. Veuillez nous conseiller Merci – user3070072

Répondre

1

En supposant que votre variable line est un ChartWrapper (comme table), vous devez utiliser:

google.visualization.events.addListener(line, 'select', function() { 
    var lineSelection = line.getChart().getSelection(); 
    var tableSelection = []; 
    for (var i = 0; i < lineSelection.length; i++) { 
     // iterate over lineSelection, since it could potentially contain multiple or 0 elements 
     // check to see if "row" property is defined, since clicking on the legend fires a select event with no "row" property 
     if (lineSelection[i].row != null) { 
      tableSelection.push({row: lineSelection[i].row}); 
     } 
    } 
    table.getChart().setSelection(tableSelection); 
}); 

google.visualization.events.addListener(table, 'select', function() { 
    var tableSelection = table.getChart().getSelection(); 
    var lineSelection = []; 
    for (var i = 0; i < lineSelection.length; i++) { 
     // iterate over lineSelection, since it could potentially contain multiple or 0 elements 
     lineSelection.push({ 
      row: tableSelection[i].row, 
      column: /* choose a column to select */ 
     }); 
     // you may add more selections here if you want to select points from multiple data series 
    } 
    line.getChart().setSelection(lineSelection); 
}); 
+0

Ceci est une aide précieuse. J'apprécie vraiment votre aide, votre temps et vos efforts dans cette explication/solution. Merci beaucoup = D – user3070072