Перезагрузка графика чартов только добавляет новые данные - PullRequest
0 голосов
/ 18 марта 2019

Я использую Живые диаграммы в своем приложении для диаграммы Парето. Я сделал коллекцию серии. Я загружаю его из хранимой процедуры следующим образом:

public void LoadChart()
{
    List<DataTops> dataTops = GetTops();
    ChartValues<int> Pareto = new ChartValues<int>();
    List<string> timevalues = new List<string>();
    int selected = ComboSelect();
    IDLables = new List<string>();
    foreach (var item in dataTops)
    {
        values.Add(item.Total);
        Pareto.Add(item.Running);
        IDLables.Add((item.W) + "." + (item.B));
    }

    TopAlarms = new SeriesCollection
    {
        new ColumnSeries
        {
            Title = "Total",
            Values =values,
            DataLabels = false,
            ScalesYAt = 0,
        },

        new LineSeries
        {
            Title = "%",
            Values = Pareto,
            ScalesYAt = 1,
            PointGeometrySize = 0
        }
    };

public List<DataTops> GetTops()
    {
        int selected = ComboSelect();

        DataSet Ds = new DataSet();
        DataSetTableAdapters.TimePerID_TopTableAdapter TimerTopta = new DataSetTableAdapters.TimePerID_TopTableAdapter();
        TimerTopta.Fill(Ds.TimePerID_Top, selected);
        List<DataTops> Tops = new List<DataTops>();
        foreach (DataRow row in Ds.Tables["TimePerID_Top"].Rows)
        {
            Tops.Add(new DataTops() { Total = (int)row["Total"], W = (int)row["W"], B = (int)row["B"], Amount = (int)row["Amount"], Running = (int)row["Running"] });
        }
        return Tops;
    }

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

Живые графики не автоматически очищают данные коллекции графиков при загрузке, поэтому я сделал это:

private void UpdateChart_Click(object sender, RoutedEventArgs e)
    {
        if (TopAlarms != null)
        {
            TopAlarms.Clear();

        }
        LoadChart();
    }

Но он все равно не очистится и не перезагрузит график. Как я могу перезагрузить график при нажатии кнопки, чтобы отобразился новый выбранный объем данных?

1 Ответ

0 голосов
/ 19 марта 2019

после некоторого тестирования и повторных исследований у меня есть следующее решение для очистки графика:

try
{
    if (TopAlarms != null)
    {
        TopAlarms.Clear();

    }
}
catch { }

Возможно, это не лучшее решение, но оно работает для меня.

...