在Google Charts的甘特图中清空GetSelection()对象

时间:2016-04-24 15:08:13

标签: javascript jquery charts google-visualization gantt-chart

我一直在学习使用谷歌图表,到目前为止,我没有问题。然而,最近我尝试使用甘特图并出现了一个问题。我设法用SQL服务器提供的数据正确绘制图表。但是,如果单击图表实体,我想提醒所选实体的ID。

我了解Google图表有这个getSelection()函数和Event Handler。但是,当我尝试实现它时,数组返回空(在控制台中写入[{}})。我甚至使用了谷歌图表的例子,但它仍然返回空数组。

这是我使用的代码:

<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>

<script>
    google.charts.load('current', {'packages':['gantt']});
    google.charts.setOnLoadCallback(drawChart);

    function daysToMilliseconds(days) {
      return days * 24 * 60 * 60 * 1000;
    }

    function drawChart() {

      var data = new google.visualization.DataTable();
      data.addColumn('string', 'Task ID');
      data.addColumn('string', 'Task Name');
      data.addColumn('date', 'Start Date');
      data.addColumn('date', 'End Date');
      data.addColumn('number', 'Duration');
      data.addColumn('number', 'Percent Complete');
      data.addColumn('string', 'Dependencies');

      data.addRows([
        ['Research', 'Find sources',
         new Date(2015, 0, 1), new Date(2015, 0, 5), null,  100,  null],
        ['Write', 'Write paper',
         null, new Date(2015, 0, 9), daysToMilliseconds(3), 25, 'Research,Outline'],
        ['Cite', 'Create bibliography',
         null, new Date(2015, 0, 7), daysToMilliseconds(1), 20, 'Research'],
        ['Complete', 'Hand in paper',
         null, new Date(2015, 0, 10), daysToMilliseconds(1), 0, 'Cite,Write'],
        ['Outline', 'Outline paper',
         null, new Date(2015, 0, 6), daysToMilliseconds(1), 100, 'Research']
      ]);

      var options = {
        height: 275
      };

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

      // When the table is selected, update the orgchart.
      google.visualization.events.addListener(chart, 'select', function() 
      {
          var obj = chart.getSelection();
          alert(obj[0].column);
      });

      chart.draw(data, options);
    }
</script>

<div id="chart_div"></div>

这是jsfiddle:https://jsfiddle.net/2ku7tzex/1/#&togetherjs=cjVlbdFhV3

有人知道我做错了吗?

先谢谢!

1 个答案:

答案 0 :(得分:0)

这个https://jsfiddle.net/hrtgp54r/为我解决了这个问题。

Public Sub CopySelectedSheets()

    Dim Sh As WorkSheet
    Dim stopDate As Date
    
    stopDate = Sheets("Org. & Staff Basic Data").Range("C19").Value
    For Each Sh In ActiveWindow.SelectedSheets
        If Date >= stopDate Then
           MsgBox "This code cannot be executed after " & stopDate
           Exit For
        Else
            Sh.Copy
        End If
    Next Sh

End Sub
相关问题