【问题标题】:Literal control not updating javascript properly文字控件未正确更新 javascript
【发布时间】: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();当IsPostBacktrue 时,我也会在页面加载时执行此操作。

这很好用;但是当我更改我的“日期范围”控件以导致回发并反过来重新生成脚本时,没有任何变化。旧图表被渲染。我知道脚本可以很好地重新生成,因为如果我创建第二个literal 控件并复制我正在做的所有事情但没有&lt;script&gt; 标记,我可以以纯文本形式读取更改并看到值确实发生了变化。

正如在 sn-p 中看到的,我已将 data 记录到控制台,它也没有改变。

再次:对两种不同的文字(一种带有&lt;script&gt; 标签,另一种没有)执行相同的操作,一个可以正常更新,而实际脚本则不能。

如果我通过 Chrome 控制台运行原始 javascript,它会正确更新。

我这里有什么明显的遗漏吗?

【问题讨论】:

标签: javascript asp.net google-visualization


【解决方案1】:

Google ASP.NET Ajax 为您创建的客户端 pageLoad() Javascript 方法 - 这将在部分回发时触发,因此将您的代码放入其中(重新)生成图表。

【讨论】:

    猜你喜欢
    • 2016-11-08
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    相关资源
    最近更新 更多