用chartcontrol用了一个星期,想把这个星期的劳动成果记录一下:
chartcontrol是devexpress控件库中很好用的一个图表显示控件,功能很强大。我下面从简单的介绍起:
1.显示二维表
二维表的意思是只有两列,这是最方便的。而且我们以柱状图为例:
chartControl1.Series.Clear(); //清除系列
Series serPici = new Series(" 表明", ViewType.Bar); //新建系列
serPici.DataSource = data; //绑定数据源
serPici.ArgumentDataMember = "检查类型"; //指定X轴绑定列
serPici.ArgumentScaleType = ScaleType.Qualitative; //指定X轴坐标以定性方式表示
serPici.ValueDataMembers.AddRange(new string[] { "数量" }); //指定Y轴绑定列
serPici.ValueScaleType = ScaleType.Numerical; //指定Y轴以数字方式标记
//serPici.LegendText = "批次量";
chartControl1.Series.Add(serPici); //添加系列
//设置X轴和Y轴,可以不设置
((XYDiagram)chartControl1.Diagram).AxisY.Title.Font = new Font("Tahoma", 10);
((XYDiagram)chartControl1.Diagram).AxisY.Title.TextColor = System.Drawing.Color.Red;
((XYDiagram)chartControl1.Diagram).AxisY.Title.Text = "数量";
//((XYDiagram)chartControl1.Diagram).AxisY.Title.Visible = true;
((XYDiagram)chartControl1.Diagram).AxisY.Title.Visible = true;
((XYDiagram)chartControl1.Diagram).AxisX.Title.Text = "检查类型";
((XYDiagram)chartControl1.Diagram).AxisX.Title.Visible = true;
//设置图例的位置
chartControl1.Legend.AlignmentHorizontal = LegendAlignmentHorizontal.Right;
chartControl1.Legend.AlignmentVertical = LegendAlignmentVertical.Top;
2.显示三维表
如果你的数据表含有三列,这时你就需要采用下面的方法了。
chartControl1.Series.Clear(); //Series serPici = new Series("Bar", ViewType.Bar); //serPici.DataSource = data; chartControl1.DataSource = data; chartControl1.SeriesDataMember = "检查类型"; chartControl1.SeriesTemplate.ArgumentDataMember = "报告医师"; chartControl1.SeriesTemplate.ValueDataMembers.AddRange(new string[1]{"数量"});这时你也可以如上设置X轴和Y轴的标题,显示内容等。但是注意这个模板不能用于二维表的显示,比如你可能想要把检查类型那行去除显示二维表,试验结果证明,这时行不通的。
这里要特别提醒的是:如果在代码中存在数据源绑定变换,最好加上
chartControl1.BeginInit();
chartControl1.EndInit();
这样确保数据源切换能够被chartcontrol识别并及时显示。
3.四维表
四维表也是可以显示的。这时可能把表格的类型设置为stackedbar。
这个可以使用sidebysidebar,比如说四列为:报告医师、检查类型、报告质量、数量。则可根据报告质量和检查类型进行循环,将两列合为一列作为series的name即可。
总结下:对于devexpress的控件,我也才开始了解。它有个专门的论坛上有中文文档,需要静下心来去研究。而且它的国外官网有support页面,中午至晚上都可以留言,回复还挺快的。关于chartcontrol,虽然我写了这么多,但还只是皮毛。如多坐标轴的设置,pane的设置等等。我研究出成果再和大家分享。