簡體   English   中英

Highcharts在asp.net的UpdatePanel中不起作用

[英]Highcharts not working in UpdatePanel of asp.net

我在asp.net中繪制了一個圖表。 我工作正常,但是當我將SUBMIT按鈕放在updatepanel中時,highchart無法正常工作。它無法重繪。 頁面未重新加載,因此未重新繪制。

ASPX代碼-

  <asp:UpdatePanel runat="server" ID="update1">
            <ContentTemplate>
        <asp:Button ID="button_borrowing_calculate" CssClass="SDButtonGrad" runat="server" Text="Calculate>>" Height="30px" Width="90px" OnClientClick="emptycheck();" OnClick="btn_bp_calculate_Click" /></ContentTemplate>
          </ContentTemplate>
        </asp:UpdatePanel>


    <asp:UpdatePanel runat="server" ID="updatep">
            <ContentTemplate>
                          <div id="rp_graph1" style="height: auto; width: 100%;" runat="server">
                                                <highchart:LineChart runat="server" Height="300px" Width="99%" ID="hcLine" />
                                            </div>
          </ContentTemplate>
        </asp:UpdatePanel>

aspx.cs代碼-

   protected void btn_bp_calculate_Click(object sender, EventArgs e)
{


    hcLine.Title.text = "Borrowing Capacity";
    hcLine.YAxis.Add(new YAxisItem { title = new Title("Amount") });
    hcLine.XAxis.Add(new XAxisItem
    {
        categories = new[] { "0","1", "2","3", "4","5", "6","7", "8","9", "10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30",
                                                            "31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50"
                                                        }
    });

    var series = new List<Serie>();
    series.Add(new Serie { data = new object[] { 400, 435, 446, 479, 554, 634, 687, 750, 831 } });
    //bind 
    hcLine.DataSource = series;
    hcLine.DataBind();




}

您的aspx代碼不是很清楚。 但我會寫兩個建議,然后嘗試其中一個

如果您的按鈕在更新面板之外,請嘗試以下方式:

     <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false">
 <ContentTemplate>
<div id="rp_graph1" style="height: auto; width: 100%;" runat="server">
  <highchart:LineChart runat="server" Height="300px" Width="99%" ID="hcLine" />
</div>
</ContentTemplate>
<Triggers>
 <asp:AsyncPostBackTrigger ControlID="button_borrowing_calculate" />
  </Triggers>
</asp:UpdatePanel>

如果您的按鈕在更新面板中,則將屬性childrenAsTrigger設置為true

<asp:UpdatePanel ID="UpdatePanel1" runat="server"  ChildrenAsTriggers="true">

代替使用AsyncPostBackTrigger,而使用PostBackTrigger 通常我在Page_load方法中注冊它。

這是我使用dotnet.HighCharts組件的簡短示例。

<asp:UpdatePanel ID="updPanel" runat="server">
    <ContentTemplate>
        <asp:Button ID="btnRefresh" Text="Refresh" OnClick="btnRefresh_Click" runat="server" />
        <div>
            <asp:Literal ID="chrtMyChart" runat="server"></asp:Literal>
        </div>
    </ContentTemplate>
</asp:UpdatePanel>

致電:

protected void Page_Load(object sender, EventArgs e)
{
    ScriptManager.GetCurrent(this).RegisterPostBackControl(btnRefresh);

    Render_Chart("%");
}

Render_Chart是生成圖表的方法。 也叫btnRefresh按鈕

如果您想要一個完整的示例,請嘗試看一下這篇文章

沒有可接受的答案,因此想到編寫我尋求的解決方案,以便其他人可以使用它。

來源是http://www.balsamino.com/programming/39-highcharts-dotnet-and-updatepanel-a-complete-solution.html

基本上,在具有updatepanels的Web表單中,僅執行litxxx.text = mydontnethighchartsoutput()不起作用。

您所需要做的就是從dotnethighcharts函數返回兩件事:1. chart1.ChartContainerHtmlString()。ToString 2. chart1.ChartScriptHtmlString()。ToString

將輸出1.從放到ScriptManager.RegisterStartupScript(最后一個參數= FALSE表示您不希望將腳本塊添加為chart1.ChartContainerHtmlString()。ToString將為您完成此操作)

將2的輸出放入您的文字,如LitMyLiteral.text = chart1.ChartScriptHtmlString()。ToString

希望有幫助:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM