免费图表控件MsChart教程系列之实例操作数据绑定(交叉表)应用(4)
2.绑定一个交叉表
微软的图表控件提供了一个交叉表数据的绑定方法DataBindCrossTable,它可以根据数据动态的生成数据序列(Series),借用官方的例子,数据库的表数据如下:
Name | Year | Sales | Commissions |
---|---|---|---|
John | 2002 | 55676.55 | 2699.33 |
Mary | 2002 | 44333 | 2299 |
Andrew | 2002 | 64455.4 | 3636 |
John | 2003 | 49884 | 2355 |
Mary | 2003 | 52994 | 2487 |
Andrew | 2003 | 66449 | 3794 |
John | 2004 | 62994 | 3593 |
Mary | 2004 | 54993 | 2599 |
我们先看看DataBindCrossTable的参数,它有两个重载方法,分别是:
public void DataBindCrossTable (
IEnumerable dataSource,
string seriesGroupByField,
string xField,
string yFields,
string otherFields,
PointSortOrder sortingOrder
)
以及
public void DataBindCrossTable (
IEnumerable dataSource,
string seriesGroupByField,
string xField,
string yFields,
string otherFields
)
每个参数的含义如下:
dataSource
要绑定的数据源.
seriesGroupByField
要分组统计的数据字段名称,例如按姓名、日期等.
xField
X轴绑定的字段名称.
yFields
Y轴绑定的字段名称,如果需要绑定多个字段,则用逗号将字段名分开.
otherFields
其它数据字段属性,就是上面刚讲的,标签、提示、Url等属性.
sortingOrder
设置数据是正确还是逆序排列.
此时要以统计每个用户的年销售曲线,那么分组统计的字段名应该设置为Name,如下:
Chart1.DataBindCrossTable(
myReader,
"Name",
"Year" ,
"Sales",
"Label=Commissions{C}");
用如上的方法绑定,生成的图形如下:
相反,如果要统计用户每年的曲线,则将字段反转一下即可,如下:
Chart1.DataBindCrossTable(
myReader,
"Year",
"Name",
"Sales",
"Label=Commissions{C}");
生成的曲线图如下:
这次就先说到这里咯,说几个需要注意的地方:
- 在进行Y轴数据绑定的时候,如果要绑定多个字段,默认情况会出错,那是因为需要设置Y轴的可保存值数量,设置为你需要保存的数量即可,设置的地点在:Series-》YValuesPrePoint,设置为你需要显示的个数即可。
- 在进行DataTable绑定的时候,Label、ToolTip等属性的字段格式化比较困难(otherFields 属性),我试了半天,也就试出了一次只能绑定一个字段,因为是和数据集绑定,如果要在标签上增加文字的话,可以使用:Field{xxxx#xxxx},其中#会替换为相应的文字,例如:Field的值为45,那么最后的呈现的结果就是:xxxx45XXXX.
BTW:有很多东西我自己也在研究中,因此说得不是很完善,希望大家一起研究吧~下次再研究一下数据操作方面的东东以及标签等的显示。