call javascript from updatepanel

call javascript from updatepanel

本文关键字:updatepanel from javascript call      更新时间:2023-09-26

我正在使用谷歌图表绘制一组图表,使用下拉列表更改图表类型。

但是,将下拉列表包装在 UpdatePanel 中后,将不再触发 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>

我尝试了使用脚本管理器而不是受SO不同答案启发的客户端脚本的不同方法,但没有运气。

编辑:

取代:

cs.RegisterStartupScript(typeof(Page), "isActive", script, true); 

跟:

ScriptManager.RegisterStartupScript(updatepanelid, updatepanelid.GetType(), Guid.NewGuid().ToString(), script, true);

修好了。

您可以尝试将脚本放入文字中,而不是

cs.RegisterStartupScript(typeof(Page), "isActive", script, true);

附言。我还没有测试过。