我正在使用谷歌图表绘制一组图表,通过下拉列表更改图表类型。
但是,在更新面板中包装下拉列表后,不再触发 javascript。javascript 中的第一行是要确认的警报。
应该触发javascript的代码:
protected void Unnamed_SelectedIndexChanged(object sender, EventArgs e) {
DropDownList ddl = (DropDownList)sender;
if (ddl.SelectedItem != null) {
ClientScriptManager cs = Page.ClientScript;
string script = String.Format("drawChart(\'{0}\',\'{1}\',\'{2}\',\'{3}\',\'{4}\');", chart.ClientID, ddl.SelectedValue.ToString(), "i en kage i gram", "string,NOGETTEKST;number,Mængde", "Mel,500;Sukker,500;Smør,100;Salt,32;Vand,400;Cola,150");
cs.RegisterStartupScript(typeof(Page), "isActive", script, true);
}
}
在我将更新面板放在下拉列表周围之前,这很好用。
<asp:UpdatePanel runat="server" ID="hejbamse" ChildrenAsTriggers="true">
<ContentTemplate>
<asp:DropDownList runat="server" OnSelectedIndexChanged="Unnamed_SelectedIndexChanged" ID="ddl" AutoPostBack="true">
<asp:ListItem Text="" />
<asp:ListItem Text="LineChart" />
<asp:ListItem Text="PieChart" />
<asp:ListItem Text="BarChart" />
<asp:ListItem Text="ColumnChart" />
</asp:DropDownList>
<div id="chart" style="width: 900px; height: 500px;" runat="server"></div>
</ContentTemplate>
我尝试了使用 scriptmanager 而不是 clientscript 的不同方法,灵感来自 SO 上的不同答案,但没有运气。
编辑:
替换:
cs.RegisterStartupScript(typeof(Page), "isActive", script, true);
和:
ScriptManager.RegisterStartupScript(updatepanelid, updatepanelid.GetType(), Guid.NewGuid().ToString(), script, true);
修好了。