将代码后面的数据传递给javascript,以便在Google时间轴中使用

时间:2013-12-07 19:16:53

标签: javascript google-visualization

我正在尝试将Google timeline与我的代码隐藏文件中的一些用户定义数据一起使用。我一直收到一个错误,“给出的行大小不同于4(表中的列数)。”

在我的代码中,页面加载并从db中检索用户数据。页面的javascript访问megastring字符串变量中的数据,如下所示。我在代码隐藏中添加了“=”,这将成为google时间轴行的末尾,因此我可以将字符串拆分为javascript数组tablerows的行。但是当我这样做时,我在tablerow中得到一个额外的空行,因此在for循环中使用了tablelength变量。

如果我没有将代码隐藏中的字符串转换为javascript数组,我会收到以下错误“给定的每一行必须为null或数组。”

for循环遍历并用google时间轴的实际撇号替换撇号的占位符。最终格式化的数据保存在javascript数组中。

现在,我只是试图从代码隐藏中传递“['总统','乔治华盛顿',新日期(1789年,3月29日),新日期(1797,2,3)] =”。当我将finalrow变量输出到警报时,它看起来像['President','George Washington',new Date(1789,3,29),new Date(1797,2,3)]。我不知道为什么我一直收到关于行的错误。

google.setOnLoadCallback(drawChart);
function drawChart() {

    var rawstring = '<%= megaString%>';
    var tablerows = rawstring.split("=");
    var finalrows = new Array();
    var tablelength = tablerows.length - 1;

    for (var i = 0; i < tablelength; i++) {
        var tempstr = tablerows[i];
        tempstr = tempstr.replace(/&apos;/g, "'");
        finalrows[i] = tempstr;
    };

    var container = document.getElementById('example3.1');
    var chart = new google.visualization.Timeline(container);

    var dataTable = new google.visualization.DataTable();
    dataTable.addColumn({ type: 'string', id: 'Position' });
    dataTable.addColumn({ type: 'string', id: 'Name' });
    dataTable.addColumn({ type: 'date', id: 'Start' });
    dataTable.addColumn({ type: 'date', id: 'End' });
    dataTable.addRows([
        finalrows
    ]);

    chart.draw(dataTable);
}

0 个答案:

没有答案