2012-02-10 5 views
0

У меня есть список буферов, которые я показываю в радерах телериков. Он отображается правильно, но когда один (или несколько) буферов обновляется, я хочу обновить диаграмму, чтобы отразить новое состояние. Единственное, что я могу сделать, это воссоздать диаграмму с нуля, это очень простое решение, но не очень умное ... Так что мой вопрос в том, есть ли специальный тип RadChart или какой-либо параметр, чтобы установить диаграмму для автоматического обновления, когда одна из коллекции отображается как DataSeries. Кто-нибудь может помочь?Обновление таблицы telerik при изменении данных

Вот код, я использую для создания диаграммы:

private void createChart() 
    { 
     //Set axis stuff and clear old configuration here 

      //Create a dataseries for each values to draw 
      foreach (ChannelKeyValueConfiguration channelKeyValue in this.Device.Configuration.ChannelConfigurations) 
       { 

        IChannel channel = this.Device.Channels[channelKeyValue.Name]; 

        DataSeries serie = new DataSeries(); 
        serie.Definition = new LineSeriesDefinition(); 
        serie.LegendLabel = channel.Description; 

        int i = 0; 
        int elNumber = channel.Measure.Buffer.Count; //Neeeded to set xAxis values 
        DateTime minTime = channel.Measure.TimeStamp.Value.AddMilliseconds(-1 * elNumber * channel.Measure.PollingTime); //Neeeded to set xAxis values 

        foreach (double point in channel.Measure.Buffer) //Buffer is a Queue<T> that i use as data provider. It updates each x seconds. 
        { 
         i++; 
         serie.Add(new DataPoint() { XValue = minTime.AddMilliseconds(i * channel.Measure.PollingTime).ToOADate(), YValue = point }); 
        } 

        RadTimeChart.DefaultView.ChartArea.DataSeries.Add(serie); 
       } 
      } 

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

void StatusChanged(object sender, EventArgs e) 
    { 
     Dispatcher.BeginInvoke(new Action(delegate 
     { 
      createChart(); 
     })); 
    } 

Просьба представить некоторое представление о том, как лучше обрабатывать обновления. Спасибо заранее!

ответ

0

После многих поисков и испытаний я узнал, что диаграммы телериков медленны, а иногда и используются память, чтобы начать с избытком, если вы не используете Queue для разбивки диаграммы. Однако они дают очень хорошие examples in their site, как пример Live Data, это в значительной степени то, что я искал.

Смежные вопросы