2010-12-15 16 views
9

¿Hay alguna forma de mostrar un mensaje "predeterminado" en un MS Chart Control si no hay datos en el gráfico?¿Puedo mostrar un mensaje si MS Chart Control no tiene datos?

Tengo un gráfico, con algunos controles que permiten al usuario elegir varios intervalos de fechas. Si no hay datos para ser graficados en ese rango de fechas, actualmente simplemente no muestra nada (o al menos muestra la leyenda y el fondo, pero eso es todo).

Quiero que aparezca un mensaje que dice "no hay datos" para este período "o algo en su lugar.

Gracias,

Ben

Respuesta

9

Sobre la base de la respuesta de Chris, aquí hay un ejemplo más completo:

En el código ASPX, agregar el controlador OnDataBound a la etiqueta de tabla. Esto supone que está utilizando un SqlDataSource para la fuente de datos.

<asp:Chart ID="ChartExample" runat="server" 
    DataSourceID="SqlDataSourceExample" 
    OnDataBound="ChartExample_DataBound"> 

En el código subyacente, los controles de controlador si la primera serie tiene ningún dato, y si no lo hace, inserta la anotación en rojo.

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); 
    } 
} 
5

usted debería ser capaz de añadir una anotación a la carta si no hay datos.

TextAnnotation annotation = new TextAnnotation(); 
annotation.X = 50; 
annotation.Y = 50; 
annotation.Text = "No Data"; 
chart1.Annotations.Add(annotation); 
0

supongo que lanzas datos recuperados a una matriz y la utilizo para la unión gráfica, si es así
puede utilizar una etiqueta, mostrar/ocultar acuerdo longitud de la matriz, ya que no hay ninguna propiedad que se mostrará un cierto texto si el cuadro no tiene datos.

if (arr.Length > 0) 
    { 
     lblEmptyMSG.Visible = false; 
    } 
    else 
    { 
     lblEmptyMSG.Visible = true; 
    } 
Cuestiones relacionadas