Связывание инфраструктуры UltraChart (линейный график) с DataView - PullRequest
0 голосов
/ 06 мая 2011

Я пытаюсь привязать DataView к NumericTimeSeries через его экземпляр NumericTimeSeriesDataAppearance, но в итоге у серии есть нулевые точки Я тестирую, используя следующий код:

DataTable table = new DataTable();
table.Columns.Add("date", typeof(DateTime));
table.Columns.Add("value", typeof(double));

DataView view = new DataView(table);
view.AllowDelete = true;
view.AllowNew = true;
view.AllowEdit = true;

NumericTimeSeries series = new NumericTimeSeries();
series.Data.TimeValueColumn = "date";
series.Data.ValueColumn = "value";
series.Data.DataSource = view;
series.DataBind();

// Update series when data is changed
view.ListChanged += (sender, args) => series.DataBind();
table.RowChanged += (sender, args) => series.DataBind();
table.TableNewRow += (sender, args) => series.DataBind();
table.RowDeleted += (sender, args) => series.DataBind();

table.Rows.Add(DateTime.Now, 42.0);

System.Console.WriteLine("Number of datapoints in view is {0}", view.Count);            
System.Console.WriteLine("Number of datapoints in series is {0}", series.Points.Count);

Это выводит 1 точку данных для вида, но 0 для серии. Привязка напрямую к DataTable работает нормально, но для моей проблемы этого недостаточно (я использую DataView для сортировки DataTable по дате).

1 Ответ

0 голосов
/ 09 мая 2011

В итоге я использовал триггер для событий DataTable.RowChanged, TableNewRow и RowDeleted, обновив NumericTimeSeries:

    public void BindSortedViewToSeries(DataTable unsortedTable, DataView sortedView, NumericTimeSeries series)
    {
        unsortedTable.RowChanged += (sender, args) => MirrorDataView(sortedView, series);
        unsortedTable.TableNewRow += (sender, args) => MirrorDataView(sortedView, series);
        unsortedTable.RowDeleted += (sender, args) => MirrorDataView(sortedView, series);
        MirrorDataView(view, series);
    }

    private static void MirrorDataView(DataView view, NumericTimeSeries series)
    {
        series.Data.DataSource = view.ToTable();
        series.DataBind();
    }
...