Your Privacy Matters: We use our own and third-party cookies to improve your experience on our website. By continuing to use the website we understand that you accept their use. Cookie Policy
205
UltraChart won't refresh inside UpdatePanel
posted

I have an UltraChart inside an update panel. The initial load of the page renders the chart correctly, but if I do any sort of postback, the old image remains. Here are the things I've checked: 

  • The data source DOES refresh on the postback -- I've analyzed the data after the postback and it does indeed contain the new data (which is ultimately why I'm posting this message).
  • A new image DOES NOT get created in the file system, so it seems stuck on the old image or just plain doesn't re-render the chart
I'm using the v16.1 control set.

Here is the code which is creating this:

protected void Page_Load(object sender, EventArgs e)
{
    ChartDataBind();
}

private void ChartDataBind()
{

// Added this per the suggestion on another forum post to resolve a similar issue
UltraChart1.DataSource = null;
UltraChart1.Series.Clear();

SqlConnection conn = new SqlConnection(WebConfigurationManager.ConnectionStrings["BillingProductivityConnectionString"].ConnectionString);
SqlCommand cmd = new SqlCommand("uspEmployeeProductivityDetails_TransactionTrend", conn);
cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.AddWithValue("@ClientID", hdnClientID.Value);
cmd.Parameters.AddWithValue("@ClientEmployeeID", hdnEmployeeID.Value);
cmd.Parameters.AddWithValue("@FromDate", lblFromDate.Text);
cmd.Parameters.AddWithValue("@ToDate", lblToDate.Text);
cmd.Parameters.AddWithValue("@TransFilter", WebDropDown1.CurrentValue ?? "");
cmd.Parameters.AddWithValue("@QtyOrPts", rblTT_QtyOrPts.SelectedValue);

DataTable dt = new DataTable();
conn.Open();
dt.Load(cmd.ExecuteReader());
conn.Close();

cmd.Dispose();
conn.Dispose();

UltraChart1.DataSource = dt;
UltraChart1.DataBind();

}

<asp:UpdatePanel ID="upnlChart" runat="server">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="rblTT_QtyOrPts" />
<asp:AsyncPostBackTrigger ControlID="WebDropDown1" EventName="SelectionChanged" />
</Triggers>
<ContentTemplate>

<div class="content-panel-header">
<div style="display: inline-block;">Transaction Trend</div>
<div class="content-panel-header-criteria">

<div style="display: inline-block; ">Metric: </div>
<asp:RadioButtonList ID="rblTT_QtyOrPts" runat="server" AutoPostBack="true" RepeatDirection="Horizontal" RepeatLayout="Flow" style="display: inline-block; margin-right: 25px;">
<asp:ListItem Text="Qty" Value="Qty" Selected="True" />
<asp:ListItem Text="Points" Value="Pts" Selected="False" />
</asp:RadioButtonList>
<asp:RadioButtonList ID="rblTimePeriod" runat="server" AutoPostBack="true" RepeatDirection="Horizontal" RepeatLayout="Flow" style="display: inline-block; margin-right: 25px;">
<asp:ListItem Text="Hours" Value="Hours" Selected="True" />
<asp:ListItem Text="Days" Value="Days" Selected="False" />
<asp:ListItem Text="Months" Value="Months" Selected="False" />
</asp:RadioButtonList>
<div style="display: inline-block;">
<asp:UpdateProgress ID="UpdateProgress1" runat="server">
<ProgressTemplate>
<asp:Image ID="img2Ajax" runat="server" ImageUrl="~/Images/ajax-loader.gif" style="height: 15px; display: inline-block;" />
</ProgressTemplate>
</asp:UpdateProgress>
</div>
</div>
</div>

<div class="criteria-panel">Transaction Filter
<ig:WebDropDown ID="WebDropDown1" runat="server" Width="800px" DataKeyFields="Trans" DataSourceID="ObjectDataSource2" TextField="Trans" ValueField="Trans" OnSelectionChanged="WebDropDown1_SelectionChanged" AutoPostBackFlags-SelectionChanged="On">
</ig:WebDropDown>
</div>

<asp:ObjectDataSource ID="ObjectDataSource2" runat="server" OldValuesParameterFormatString="original_{0}" SelectMethod="GetData" TypeName="Dashboards.BillingProductivityDataSetTableAdapters.uspProductivity_GetEmployeeTransactionTypesTableAdapter">
<SelectParameters>
<asp:ControlParameter ControlID="hdnClientID" Name="ClientID" PropertyName="Value" Type="Int32" />
<asp:ControlParameter ControlID="hdnEmployeeID" Name="ClientEmployeeID" PropertyName="Value" Type="Int32" />
<asp:ControlParameter ControlID="lblFromDate" Name="FromDate" PropertyName="Text" Type="DateTime" />
<asp:ControlParameter ControlID="lblToDate" Name="ToDate" PropertyName="Text" Type="DateTime" />
</SelectParameters>
</asp:ObjectDataSource>


<igchart:UltraChart ID="UltraChart1" runat="server" ChartType="LineChart" EmptyChartText="Data Not Available. Please call UltraChart.Data.DataBind() after setting valid Data.DataSource" Height="487px" Version="16.1" Width="1036px" DeploymentScenario-Scenario="FileSystem">
</igchart:UltraChart>

</ContentTemplate>
</asp:UpdatePanel>