0

Google チャートを使用して、ドロップダウン リストでチャート タイプを変更する一連のチャートを描画しています。

ただし、ドロップダウンリストを更新パネルにラップした後、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のさまざまな回答からインスピレーションを得たclientscriptの代わりにscriptmanagerを使用してさまざまなアプローチを試しましたが、うまくいきませんでした。

編集:

置き換え:

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

と:

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

それを修正しました。

4

1 に答える 1

0

代わりに、スクリプトをリテラルに入れてみることができます

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

PS。私はそれをテストしていません。

于 2013-10-08T07:37:16.447 に答える