如何在我的视图中显示谷歌图表?

时间:2013-09-19 09:39:58

标签: c# javascript arrays asp.net-mvc-4 google-visualization

我在我的控制器中用c#创建一个数组,如下所示:

[["test", "atest", "btest", "ctest"],["1","2","3","4"]...]

所以它是一个数组数组。然后我将它传递给名为 ViewBag.TabComplet 的ViewBag中的View。 现在,我需要将该数据数组传递给谷歌图表vizualisation,如下所示:

google.load("visualization", "1", { packages: ["corechart"], callback: drawVisualization() });
function drawVisualization() {
    var data = google.visualization.arrayToDataTable(@ViewBag.TabComplet);
    var options = {
        title: "Nombres d'incidents ouverts en Hotline en 2013",
        vAxis: { title: "Cups" },
        hAxis: { title: "Month" },
        seriesType: "bars",
        series: { 2: { type: "line"} },
        colors: ["blue", "#01A9DB", "red"]
    };
    var chart = new google.visualization.ComboChart(document.getElementById("chart_div"));
    chart.draw(data, options);
}

但不幸的是,它显示了一个错误说:意外令牌] 有人有解决方案吗?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。对于那些感兴趣的人,javascript函数 arrayToDataTable 分析每列中的数据类型,如果要显示的数据不是int,则会显示错误并显示数据类型不正确。如果您想避免使用该功能,可以使用不同的功能 addRow addColumn ,..来构建正确的数据数组。 根据这个,我在我的控制器中创建了一个函数,由ajax调用调用,它返回一个看起来像这样的JSON数组:

[["Mois","Nombre incidents","Nombre incidents pris en direct"],["Jan",15,2],["Fév",9,5],["Mar",14,3],["Avr",19,9],["Mai",9,8],["Juin",12,6],["Juil",13,5],["Aoû",4,3],["Sept",11,0],["Oct",0,0],["Nov",0,0],["Dec",0,0]]

如您所见,它是一个数组数组,其中第一个数组是每个后续数据的标签,然后每个数组的第一个值是一个字符串,它将是每个数据数组的Xaxis的标签。 / p>

您可以直接传递JSON作为图表的来源。您无需将其解析为javascript数组。