我正在尝试将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(/'/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);
}