MS Chart 控件学习(二) 数据绑定

   Chart的数据绑定非常灵活支持多种形式的数据绑定,现在主要介绍几种常见的!!

 一:关于数据源:

  1. 可以在图表的设计界面,在属性设置窗口中的Series属性下的Points中添加需要的数据.
  2. 可以在图表的设计界面中,在属性中绑定一个数据源.
  3. 可以在后台代码中,动态添加数据.
  4. 可以在后台代码中设置一个或多个数据源,直接绑定到图表中.

  根据官方文档的说法,只要是实现了IEnumerable接口 的数据类型,都可以绑定到图表控件中,例如:DataView, DataReader, DataSet, DataRow, DataColumn, Array, List, SqlCommand, OleDbCommand, SqlDataAdapter, 及OleDbDataAdapter对象。
   Chart控件支持多数据源的绑定,例如:X轴绑定一个数据集ds1,Y轴可以绑定另外一个数据集 ds2。

Chart控件的绑定方式一般有两种,常规绑定及交叉表的绑定。

Chart控件的Y轴数据,支持一次绑定多个值,议会制时间、区域、使用量等之类的图形。

三 数据绑定

 1:最常见的绑定方式(XValueMember ,YValueMembers )

// 设置数据源,Ds是一个取出数据集的DataSet 
chart1.DataSource = Ds;
// 分别设置图表的X值和Y值
chart1.Series["Series1"].XValueMember = "Name";
chart1.Series["Series1"]. YValueMembers = "Sales";
// 绑定设置的数据
chart1.DataBind();

 2: 直接节点绑定Points.DataBindXY

//myReader为取得的DataReader对象 
Chart1.Series["Series1"].Points.DataBindXY(myReader, "Name", myReader, "Sales");

这种的没大用过,和第一种差不多,不解释

3:调用DataBind实现

//myReader 为dataread
Chart1.Series["Series1"].Points.DataBind(myReader, "Name", "Sales", "");

上面三种方法需要自己建立Series,要显示两个柱状图,像上面的例子中的图形,那么得手动建立两个Series,然后分别进行上面的绑定操作。也可在后台动态生成Series

4:交叉表绑定DataBindCrossTable

 微软的图表控件提供了一个交叉表数据的绑定方法DataBindCrossTable,它可以根据数据动态的生成数据序列(Series),借用官方的例子,数据库的表数据如下
 我们先看看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}");

 如图:

这中方法好处就是可以轻松实现多个series的绑定。

需要注意的地方:
在进行Y轴数据绑定的时候,如果要绑定多个字段,默认情况会出错,那是因为需要设置Y轴的可保存值数量,设置为你需要保存的数量即可,设置的地点在:Series-》YValuesPrePoint,设置为你需要显示的个数即可。

五:行绑定,这种方法是利用循环将各个数据点绑定到图标中。同样可以实现交叉表绑定的效果

foreach (DataRow row in ds.Tables[0].Rows)
{
string seriesName=row["SalesRep"].ToString();
//动态添加Series
Chart1.Series.Add(seriesName);
//设置为曲线图
Chart1.Series[seriesName].ChartType = SeriesChartType.Line;
Chart1.Series[seriesName].BorderWidth = 2;
for (int col = 1; col < ds.Tables[0].Columns.Count; col++)
{
string colName = ds.Tables[0].Columns[col].ColumnName;
int yVal = Convert.ToInt32(row[colName].ToString());
Chart1.Series[seriesName].Points.AddXY(colName, yVal);
}
}

如图

 

这里介绍的只是比较简单的数据绑定方法,在微软给的例子当中都可以找到,如果兴趣可以去下载

MSChart 下载
http://download.microsoft.com/download/c/c/4/cc4dcac6-ea60-4868-a8e0-62a8510aa747/MSChart.exe
如果要在VS2008IDE 环境中使用,需要安装插件支持
MSChart_VisualStudioAddOn.exe
http://download.microsoft.com/download/e/6/f/e6fedd87-9119-4037-8da8-e5de429d940a/MSChart_VisualStudio
AddOn.exe


 

 

转载于:https://www.cnblogs.com/shangshi/archive/2012/03/24/2415244.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值