【问题标题】:Google chart freezes after clicking listener 2nd time谷歌图表在第二次点击监听器后冻结
【发布时间】:2016-11-25 07:23:36
【问题描述】:

我有一个问题,当我单击任何一个栏时,一旦它工作正常,然后在我关闭子窗口并再次单击同一栏后,图表会冻结。但是,如果首先我单击一个栏,然后单击另一个不同的栏,它不会冻结,直到我再次单击同一栏

<script type="text/javascript">
    google.charts.load('current', { packages: ['corechart', 'bar'] });
    google.charts.setOnLoadCallback(drawBasic);

    function drawBasic() {

        var data = google.visualization.arrayToDataTable([
            ['Year', 'Remaining Items Per LOT', { role: 'style' }],

<%
    Dim intValue As Integer = CInt(Rnd() * 32768)
    Dim myRandom as New Random
    Dim graphXSplitted As String() = graphX.Split(New String() {"|"}, StringSplitOptions.None)
    Dim graphYSplitted As String() = graphY.Split(New String() {"|"}, StringSplitOptions.None)
    Dim plot As String = ""
    For index As Integer = 0 To graphXSplitted.Length - 2
        plot += "[""" & graphXSplitted(index) & """, " & graphYSplitted(index) & ", 'stroke-color: #000000; stroke-width: 2; fill-color: #" & Hex$(myRandom.Next(1118481,8388607)) & "'],"
    Next
    Response.Write(plot.Remove(plot.Length - 1))
%>
        ]);

        var options = {
            title: 'Wakugai Inventory Items',
            height: 300,
            hAxis: {
                title: 'Part Names',
                direction: -1,
                slantedText: true,
                slantedTextAngle: 45,
                textStyle: { fontSize: 12 }
            },
            vAxis: {
                title: 'Remaining (LOT)'
            },
            chartArea: { left: 130, top: 10, height: '30%' }
        };

        var chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));

        chart.draw(data, options);

        google.visualization.events.addListener(chart, 'select', function () {
            var category = data.getValue(chart.getSelection()[0].row, 0);
            window.open("graph.aspx?x=" + category + "", "Popup", "height=400,width=1000");
        });

    }
</script>

【问题讨论】:

    标签: javascript asp.net vb.net google-visualization


    【解决方案1】:

    'select' 事件在条被选中和取消选中时都会触发

    第一次点击,“选择”条形

    再次单击同一条,“取消选择”该条

    因此,在访问数组内容之前需要检查选择的length

    因为chart.getSelection()[0] 将在未选择任何内容时未定义

    google.visualization.events.addListener(chart, 'select', function () {
      var selection = chart.getSelection();
      if (selection.length > 0) {
        var category = data.getValue(selection[0].row, 0);
        window.open("graph.aspx?x=" + category + "", "Popup", "height=400,width=1000");
      }
    });
    

    【讨论】:

    • 我找到了使用方法
    • google.visualization.events.addListener(chart, 'select', function () { var category = data.getValue(chart.getSelection()[0].row, 0); window.open ("graph.aspx?x=" + category + "", "Popup", "height=400,width=1000"); chart.setSelection(); //
    • 感谢您的回复,抱歉回复晚了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-21
    • 2011-09-17
    • 2020-03-09
    • 2016-04-30
    • 2013-02-18
    相关资源
    最近更新 更多