2010-12-15 14 views
9

Grafikte veri yoksa MS Çizelgesi Denetimi'nde "varsayılan" iletinin görüntülenmesinin bir yolu var mı?MS Chart Control'ün veri yoksa bir mesaj görüntüleyebilir miyim?

Kullanıcının çeşitli tarih aralıkları seçmesine izin veren bazı denetimler içeren bir çizelgem var. Bu tarih aralığındaki bir veri yoksa, şu anda sadece hiçbir şey gösterilmez (ya da en azından bir efsaneyi ve arka planı gösterir, ama bu kadardır.)

"Hiçbir veri" yazan bir mesaj olmasını istiyorum. bu dönem için "ya da bir şey yerine. hiçbir veri yoksa

sayesinde

Ben

cevap

9

Bina, burada daha kapsamlı bir örnek. Bu, veri kaynağı için SqlDataSource kullandığınızı varsayar. arka plan kod olarak

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

, ilk seri herhangi bir veri vardır ve bunları yapmazsa, kırmızı ek açıklama ekler eğer işleyici denetler.

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

Grafikte ek açıklama eklemek mümkün olmalıdır.

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

Öyle
bir etiket kullanabilirsiniz eğer görüntülenecek hiçbir özellik olmadığı için, göstermek /, dizi uzunluğu göre gizlemek, bir Array için alınan verileri döküm tahmin ve bağlayıcı grafik için kullanmak grafikte veri yoksa belirli bir metin. grafik etiketine OnDataBound işleyicisi ekleyin ASPX kodunda

: Chris'in yanıta

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