2010-04-12 2 views
0

J'utilise un contrôle de graphique ASP.NET et il prend les données d'une base de données. Parfois, ces données sont vides, et je ne trouve aucun moyen d'afficher du texte ou similaire à la place d'un écran vide. Il n'y a aucun attribut qui me permet de faire cela.Contrôle de graphique ASP.NET avec des données vides

D'ailleurs, je pense qu'en raison des données vides, je reçois une exception chaque fois que j'essaie de montrer la carte sans données:

16.48.27 ERROR: System.Web.HttpException: File does not exist. 
    at System.Web.StaticFileHandler.GetFileInfo(String virtualPathWithPathInfo, String physicalPath, HttpResponse response) 
    at System.Web.StaticFileHandler.ProcessRequestInternal(HttpContext context) 
    at System.Web.DefaultHttpHandler.BeginProcessRequest(HttpContext context, AsyncCallback callback, Object state) 
    at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 
    at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) 

Je suppose que c'est à cause de l'attribut « ImageLocation » sur le diagramme objet, car il ne crée aucune image avec des données vides, il ne peut donc pas trouver cet emplacement.

C'est l'image que je veux éviter:

alt text http://img532.imageshack.us/img532/6215/chartt.png

Question: Est-il possible de détecter quand graphique reçoit des données vides?

Répondre

0

Vous pouvez vérifier les éléments suivants:

  1. Vérifiez si la source de données de tableau est nulle.
  2. Vérifiez si les tables de la source de données utilisées sont vides (0 ligne).
  3. Vérifiez si la requête SQL renvoie un résultat.
0

En fait, j'utilise un ObjectDataSource, et enfin ce que je l'ai fait est le suivant:

le ObjectDataSource a un événement appelé sélectionné. J'ai utilisé la méthode qui capture ces événements pour mettre la propriété Visible du graphique à false lorsque la valeur ReturnValue de ObjectDataSourceStatusEventArgs a 0 éléments, et mettre la propriété de Visible d'un label à true indiquant le manque de données, comme ceci:

protected void RcrBufferSizeODS_Selected(object sender, ObjectDataSourceStatusEventArgs e) 
{ 
    if (((List<RcrBufferSize>)e.ReturnValue).Count == 0) 
     { 
      RcrBufferChart.Visible = false; 
      EmptyDataLabel.Visible = true; 
     } 
     else 
     { 
      RcrBufferChart.Visible = true; 
      EmptyDataLabel.Visible = false; 
     } 
    } 
} 
Questions connexes