Могу ли я отобразить сообщение, если MS Chart Control не имеет данных? - PullRequest
10 голосов
/ 15 декабря 2010

Есть ли способ отобразить сообщение "по умолчанию" в MS Chart Control, если нет данных для диаграммы?

У меня есть диаграмма с некоторыми элементами управления, которые позволяют пользователю выбирать различные диапазоны дат. Если в этом диапазоне дат нет данных, которые должны быть нанесены на график, в настоящее время он просто ничего не отображает (или, по крайней мере, показывает легенду и фон, но это все).

Я хочу, чтобы было сообщение "Нет данных за этот период" или что-то в этом роде.

Спасибо

Ben

Ответы [ 3 ]

10 голосов
/ 01 февраля 2012

Основываясь на ответе Криса, вот более полный пример:

В коде ASPX добавьте обработчик OnDataBound к тегу диаграммы.Это предполагает, что вы используете SqlDataSource для источника данных.

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

В выделенном коде обработчик проверяет, есть ли в первой серии какие-либо данные, а если нет, вставляет аннотацию красного цвета..

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 голосов
/ 15 декабря 2010

Если у вас нет данных, вы можете добавить аннотацию к диаграмме.

TextAnnotation annotation = new TextAnnotation();
annotation.X = 50;
annotation.Y = 50;
annotation.Text = "No Data";
chart1.Annotations.Add(annotation);
0 голосов
/ 15 декабря 2010

Я предполагаю, что вы приведете полученные данные к массиву и используете его для привязки диаграммы, если это так
Вы можете использовать метку, показывать / скрывать ее в соответствии с длиной массива, поскольку отсутствует свойство для отображения определенного текста, если на диаграмме нет данных.

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