最經在使用DevExpress.XtraCharts中chartControl1的控件的時候,發現chartControl1.Series[i].Points.Add(sp);
的速度相當慢,而且一直處於停滯狀態;通過原理的分析,可以肯定的是chartControl1.Series[i].Points.Add(sp);的循環造成chartControl1一直在生成,并不是等待所有都Points.Add進去了才生成Chart;
出於對開發者和其他控件的經驗,肯定存在一個控制項用來管理chartControl1.DataSource的進程;
參照 DXperience 7.3.4 released on 3 Dec 2007 and What'a New
B90406 - Grid doesn't display rows when a new DataSource is assigned within a BeginUpdate - EndUpdate block
進行試驗:
Code
DataTable dtb = (new BLL_kkk()).GetListSumForChartsByLines(strSQL).Tables[0];
for (int i = 0; i < 6; i++)
{
chartControl1.Series[i].Points.Clear();
chartControl1.Series[i].Points.BeginUpdate();
}
foreach (DataRow dr in dtb.Rows)
{
for (int i = 0; i < 6; i++)
{
//((DevExpress.XtraCharts.BarSeriesView)chartControl1.Series[i].View).BarWidth = 1;
DevExpress.XtraCharts.SeriesPoint sp = new DevExpress.XtraCharts.SeriesPoint();
sp.Argument = dr[0].ToString().Trim();
Double[] bi = new double[1];
bi[0] = Double.Parse(dr[i + 1].ToString().Trim());
sp.Values = bi;
chartControl1.Series[i].Points.Add(sp);
}
}
for (int i = 0; i < 6; i++)
{
chartControl1.Series[i].Points.EndUpdate();
}
速度完全的提升了,效果DataSource ;這只是嘗試所得,任何錯誤請批評指正;
其他控件應該有類似的方法;