Перезагрузка динамических графиков диаграмма добавляет только новые данные

#c# #loading #livecharts

#c# #Загрузка #живые диаграммы

Вопрос:

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

 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:

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

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

    }
}
catch { }
  

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