【发布时间】:2015-09-17 19:41:21
【问题描述】:
我在我的页面中动态生成一个 javascript 块,最终看起来像这样:
<script>
google.load('visualization', '1', {'packages': ['corechart']});
function drawincomingCalls() {
var data = google.visualization.arrayToDataTable([
['Call Type', 'Call Amount'],
['Voicemail', 12],
['Live Transfer', 23]
]);
var options = {
title: 'Incoming Calls',
pieHole: 0.4
};
var chart = new google.visualization.PieChart(document.getElementById('incomingCallsChart'));
chart.draw(data, options);
console.log(data);
}
</script>
这是通过从 SQL 数据库中检索信息然后将literal 控件的文本属性(位于设置为始终更新的UpdatePanel 中)设置到此脚本而生成的。
从那里,我通过ScriptManager.RegisterStartupScript 致电drawincomingCalls();当IsPostBack 为true 时,我也会在页面加载时执行此操作。
这很好用;但是当我更改我的“日期范围”控件以导致回发并反过来重新生成脚本时,没有任何变化。旧图表被渲染。我知道脚本可以很好地重新生成,因为如果我创建第二个literal 控件并复制我正在做的所有事情但没有<script> 标记,我可以以纯文本形式读取更改并看到值确实发生了变化。
正如在 sn-p 中看到的,我已将 data 记录到控制台,它也没有改变。
再次:对两种不同的文字(一种带有<script> 标签,另一种没有)执行相同的操作,一个可以正常更新,而实际脚本则不能。
如果我通过 Chrome 控制台运行原始 javascript,它会正确更新。
我这里有什么明显的遗漏吗?
【问题讨论】:
-
希望此链接对stackoverflow.com/questions/2336948/… 您的代码第一次有效。你必须让它知道ajax调用。就像在 ajax 响应上重新生成谷歌图表一样。
标签: javascript asp.net google-visualization