2010-12-15 35 views
9

Existe-t-il un moyen d'afficher un message "par défaut" sur un contrôle MS Chart s'il n'y a pas de données à graver?Puis-je afficher un message si MS Chart Control ne contient aucune donnée?

J'ai un graphique, avec quelques contrôles qui permettent à l'utilisateur de choisir différentes plages de dates. S'il n'y a aucune donnée à tracer dans cette plage de dates, il n'affiche actuellement rien (ou du moins il affiche la légende et l'arrière-plan, mais c'est tout.)

Je veux qu'il y ait un message disant "pas de données" pour cette période "ou quelque chose à la place.

Merci,

Ben

Répondre

9

Miser sur la réponse de Chris, voici un exemple plus complet:

Dans le code ASPX, ajoutez le gestionnaire OnDataBound à la balise graphique. Cela suppose que vous utilisez une SqlDataSource pour la source de données.

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

Dans le code sous-jacent, le gestionnaire vérifie si la première série a des données, et si elle ne le fait pas, insère l'annotation en rouge.

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

Vous devriez être en mesure d'ajouter une annotation au tableau s'il n'y a pas de données.

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

Je suppose que vous lancez des données récupérées à un tableau et l'utiliser pour tableau de liaison, le cas échéant
vous pouvez utiliser une étiquette, afficher/cacher selon la longueur du tableau, car il n'y a pas de propriété à afficher un certain texte si le graphique n'a pas de données.

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