Is there a way to display a \"default\" message on a MS Chart Control if there is no data to chart?
I have a chart, with some controls that allow the user to pick variou
You should be able to add an annotation to the chart if there is no data.
TextAnnotation annotation = new TextAnnotation();
annotation.X = 50;
annotation.Y = 50;
annotation.Text = "No Data";
chart1.Annotations.Add(annotation);
I guess that you cast retrieved data to an Array and use it for chart binding, if so
you can use a label, show/hide it according array length, as there is no property to be displayed a certain text if chart has no data.
if (arr.Length > 0)
{
lblEmptyMSG.Visible = false;
}
else
{
lblEmptyMSG.Visible = true;
}
Building on Chris's response, here's a more complete example:
In the ASPX code, add the OnDataBound handler to the chart tag. This assumes you are using a SqlDataSource for the data source.
<asp:Chart ID="ChartExample" runat="server"
DataSourceID="SqlDataSourceExample"
OnDataBound="ChartExample_DataBound">
In the code-behind, the handler checks if the first series has any data, and if it doesn't, inserts the annotation in red.
protected void ChartExample_DataBound(object sender, EventArgs e)
{
// If there is no data in the series, show a text annotation
if(ChartExample.Series[0].Points.Count == 0)
{
System.Web.UI.DataVisualization.Charting.TextAnnotation annotation =
new System.Web.UI.DataVisualization.Charting.TextAnnotation();
annotation.Text = "No data for this period";
annotation.X = 5;
annotation.Y = 5;
annotation.Font = new System.Drawing.Font("Arial", 12);
annotation.ForeColor = System.Drawing.Color.Red;
ChartExample.Annotations.Add(annotation);
}
}