I am trying to bind a Chart to a DataTable . I would like the chart to display new rows as they are added, but the chart does not update when new rows are added to the table. I checked that both table and tableDataSource contain new rows, but chart.Series["TestTable"].Points.Count never changes from 5 .
Sample code based on the question Cannot associate datatable with Chart Control , shown below. I would like to either find out if there is an error or omission with the code below, or another, better approach that accomplishes the same goal. I know how to manually add points to a Series , but I would like to see how to do this using data binding.
Random r = new Random(); Timer timer = new Timer(); DataTable table = new DataTable("TestTable"); DateTime date = new DateTime(2013, 1, 1); IList tableDataSource = null; void timer_Tick(object sender, EventArgs e) { table.Rows.Add(date, r.NextDouble()); date = date.AddDays(1); chart.Update(); } void MainForm_Load(object sender, EventArgs e) { table.Columns.Add("Date", typeof(DateTime)); table.Columns.Add("Percent", typeof(double)); for (int i = 0; i < 5; i++) { table.Rows.Add(date, r.NextDouble()); date = date.AddDays(1); } tableDataSource = (table as IListSource).GetList(); chart.DataBindTable(tableDataSource, "Date"); timer.Interval = 500; timer.Tick += new EventHandler(timer_Tick); timer.Start(); }
source share