#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 { }
Возможно, это не лучшее решение, но для меня оно работает.