gpt4 book ai didi

javascript - 刷新 UpdatePanel 时未加载 Google 交互式图表

转载 作者:行者123 更新时间:2023-11-30 18:32:42 26 4
gpt4 key购买 nike

帮助!我花了几个小时研究这个,但找不到解决方案。我在 UpdatePanel 中使用 Google Interactive Charts API,它会在我更改下拉列表中的选择时异步刷新,这最终会更改 Google 图表的数据集。问题是图表在 UpdatePanel 刷新时消失了。我正在使用 RegisterStartupScript,我已经在更新面板中测试了一个 javascript 警报,以确认刷新时 UpdatePanel 中的 javascript 有效,因此问题似乎仅限于 Google javascript 正在做的事情。也许是 setOnLoadCallback 在刷新 UpdatePanel 后实际上没有调用 drawChart?不确定是否是这样或如何解决它。

下面的代码位于一个 Public Sub 中,它在 Page_Load 上以及下拉列表的选定值更改时调用。

    Dim strOutput As New StringBuilder

strOutput.Append("google.load('visualization', '1.0', { 'packages': ['corechart'] });")
strOutput.Append("google.setOnLoadCallback(drawChart);")
strOutput.Append("function drawChart() {")
strOutput.Append("var data = new google.visualization.DataTable();")
strOutput.Append("data.addColumn('string', 'Domain');")
strOutput.Append("data.addColumn('number', 'Value');")
strOutput.Append("data.addRows([")

Dim sqlSelect As New SqlClient.SqlCommand
sqlSelect.CommandText = String.Format("spAnalytics_ViewsByDomain")
sqlSelect.CommandType = CommandType.StoredProcedure
Dim dtChartData As DataTable = clsDB.FillDT(sqlSelect)

Dim commaCounter As Integer = 1
For Each row As DataRow In dtChartData.Rows
If ddlStat.SelectedValue = "hits" Then
strOutput.Append(String.Format("['{0}',{1}]", row.Item("domain"), row.Item("hit_count")))
ElseIf ddlStat.SelectedValue = "sessions" Then
strOutput.Append(String.Format("['{0}',{1}]", row.Item("domain"), row.Item("session_count")))
End If
If commaCounter <> dtChartData.Rows.Count Then strOutput.Append(",")
commaCounter = commaCounter + 1
Next

strOutput.Append("]);")

strOutput.Append("var options = { 'title': 'Views by domain',")
strOutput.Append("'width': 500,")
strOutput.Append("'height': 300")
strOutput.Append("};")
strOutput.Append("var chart = new google.visualization.PieChart(document.getElementById('chart_div'));")
strOutput.Append("chart.draw(data, options);")
strOutput.Append("}")

ScriptManager.RegisterStartupScript(litDomains, GetType(String), "blahblah", strOutput.ToString, True)

最佳答案

您可以省略 google.setOnloadCallback 并直接在末尾添加对该函数的调用。

关于javascript - 刷新 UpdatePanel 时未加载 Google 交互式图表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9146268/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com