【问题标题】:call javascript from updatepanel从更新面板调用 javascript
【发布时间】:2013-10-08 06:58:50
【问题描述】:

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

但是,在更新面板中包装下拉列表后,不再触发 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);

修好了。

【问题讨论】:

    标签: c# javascript asp.net updatepanel


    【解决方案1】:

    您可以尝试将脚本放在 Literal 中,而不是

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

    PS。我没有测试过。

    【讨论】:

    • 我不明白你的意思?
    • 您可以将 Literal 控件的文本作为脚本并执行。例如:ltrlControl.Text = "";
    • 你的意思是把整个 javascript 放在 script 中,而不是仅仅在函数调用中?
    • 我的意思是将这一行:cs.RegisterStartupScript(typeof(Page), "isActive", script, true); 改为:ltrlControl.Text = script;
    • 使用 scriptmanager 而不是 clientscriptmanager 使其工作。感谢您的帮助。
    猜你喜欢
    • 2013-05-11
    • 2011-12-03
    • 1970-01-01
    • 2013-02-23
    • 1970-01-01
    • 2010-10-13
    • 2011-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多