我在我的页面中动态生成一个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
集内,以便始终更新)设置为此脚本生成的。
从那里,我通过drawincomingCalls()
致电ScriptManager.RegisterStartupScript
;当IsPostBack
为true
时,我也会在页面加载时执行此操作。
这很好用;但是当我改变我的日期范围时#39;控件导致回发,然后重新生成脚本,没有任何变化。渲染旧图表。我知道脚本正在重新生成,因为如果我创建第二个literal
控件并复制我正在做的所有内容但没有<script>
标记,我可以用纯文本读取更改并查看价值确实发生了变化。
正如在代码段中看到的那样,我已将data
记录到控制台,并且它也没有改变。
再次:对两个不同的文字进行相同的事情(一个有<script>
个标签,一个没有),一个正在更新,而实际的脚本不是。
如果我通过Chrome控制台运行原始javascript,它会正确更新。
我有什么明显的失踪吗?
答案 0 :(得分:0)
Google是ASP.NET Ajax为您创建的客户端pageLoad()
Javascript方法 - 这将在部分回发时触发,因此请将代码放入(重新)生成图表。