2015-03-16 5 views
0

Я рисовал highchart в asp.net. Я работал нормально, но когда я помещаю свою кнопку SUBMIT в панель обновления, то highchart не работает. Это не перерисовывается. Страница не перезагружается, поэтому она не перерисовывается.Highcharts не работает в UpdatePanel asp.net

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(); 




} 
+1

Можете ли вы разместить соответствующий код – Izzy

+0

Вы получаете какие-либо ошибки? –

+0

нет ошибок ......Я думаю, что clientcript не перезагружается, и из-за этого график не перерисовывается на панели обновления. После вычисления граф div остается пустым. –

ответ

0

Ваш код 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 истина

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

Я думаю, что Highchart не перерисовывается, потому что clientcript не загружается без перезагрузки страницы. Как это можно решить? –

0

Вместо использования 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

Если вы хотите полный пример попытаться взглянуть at this post.

0

Нет принятого ответа, поэтому мы подумали о том, чтобы написать решение, на которое я пошел, чтобы кто-то мог его использовать.

Источник является http://www.balsamino.com/programming/39-highcharts-dotnet-and-updatepanel-a-complete-solution.html

В основном, в веб-формах с UpdatePanels, просто делать 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

Надеюсь, что поможет :)

Смежные вопросы