[关闭]
@Aiti 2017-05-05T09:14:28.000000Z 字数 3206 阅读 243

利用DevExpress的WebChartControl绘制柱状图,线状图与饼状图示例

未分类


首先,我们需要在aspx页面放置一个WebChartControl控件,代码如下,为简单起见,我们不为它设置任何属性:
注意需要在aspx的头部注册该控件:
而且需要添加对应的dll的引用,这些都是引用一个第三方控件的必需工作

  1. <%@ Register Assembly="DevExpress.XtraCharts.v15.1.Web, Version=15.1.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" Namespace="DevExpress.XtraCharts.Web" TagPrefix="dxcharts" %>
  2. <dxcharts:WebChartControl ID="WebChartControl1" runat="server" Height="400px" Width="1220px">
  3. </dxcharts:WebChartControl>

创建数据

  1. public DataTable GetDataSource
  2. {
  3. get
  4. {
  5. DataTable dt = new DataTable();
  6. dt.Columns.Add("week", typeof(string));
  7. dt.Columns.Add("money", typeof(decimal));
  8. dt.Rows.Add("星期一", 1200);
  9. dt.Rows.Add("星期二", 1500);
  10. dt.Rows.Add("星期三", 1400);
  11. dt.Rows.Add("星期四", 1450);
  12. dt.Rows.Add("星期五", 1300);
  13. dt.Rows.Add("星期六", 1325);
  14. dt.Rows.Add("星期日", 1400);
  15. return dt;
  16. }
  17. }

1,创建柱形图

  1. protected void Page_Load(object sender, EventArgs e)
  2. {
  3. Series series = new Series("金额", ViewType.Bar);
  4. DataTable dt = GetDataSource;
  5. for (int i = 0; i < dt.Rows.Count; i++)
  6. {
  7. SeriesPoint point = new SeriesPoint(dt.Rows[i]["week"].ToString(), Convert.ToDouble(dt.Rows[i]["money"].ToString()));
  8. series.Points.Add(point);
  9. }
  10. this.WebChartControl1.Series.Add(series);
  11. }

从上面的图表中可以看到,上面只有"金额"一项数据,如果我们要再加一项"成本"数据来作对比,要如何实现呢?
首先改写数据源,让其包括"成本"这一项的数据:

  1. public DataTable GetDataSource
  2. {
  3. get
  4. {
  5. DataTable dt = new DataTable();
  6. dt.Columns.Add("week", typeof(string));
  7. dt.Columns.Add("money", typeof(decimal));
  8. dt.Columns.Add("cost", typeof(decimal));
  9. dt.Rows.Add("星期一", 1200, 800);
  10. dt.Rows.Add("星期二", 1500, 1000);
  11. dt.Rows.Add("星期三", 1400, 850);
  12. dt.Rows.Add("星期四", 1450, 950);
  13. dt.Rows.Add("星期五", 1300, 900);
  14. dt.Rows.Add("星期六", 1325, 870);
  15. dt.Rows.Add("星期日", 1400, 890);
  16. return dt;
  17. }
  18. }
  19. //再改写创建图形的代码:
  20. protected void Page_Load(object sender, EventArgs e)
  21. {
  22. Series series = new Series("金额", ViewType.Bar);
  23. Series series_cost = new Series("成本", ViewType.Bar);
  24. SeriesPoint point;
  25. DataTable dt = GetDataSource;
  26. for (int i = 0; i < dt.Rows.Count; i++)
  27. {
  28. point = new SeriesPoint(dt.Rows[i]["week"].ToString(), Convert.ToDouble(dt.Rows[i]["money"].ToString()));
  29. series.Points.Add(point);
  30. point = new SeriesPoint(dt.Rows[i]["week"].ToString(), Convert.ToDouble(dt.Rows[i]["cost"].ToString()));
  31. series_cost.Points.Add(point);
  32. }
  33. this.WebChartControl1.Series.Add(series);
  34. this.WebChartControl1.Series.Add(series_cost);
  35. }

从上面的代码和结果可以看出来,一个Series对象,就代表图形中的一项数据,一个SeriesPoint对象,就代表项数据中的一个数据点,有了这两项理解,我们要再增加数据项,就非常简单了。

2,创建线状图

知道了怎么创建柱形图,再来创建线状图就很简单了,只需改写图形的类型就可以了。

  1. protected void Page_Load(object sender, EventArgs e)
  2. {
  3. Series series = new Series("金额", ViewType.Line);
  4. Series series_cost = new Series("成本", ViewType.Line);
  5. SeriesPoint point;
  6. DataTable dt = GetDataSource;
  7. for (int i = 0; i < dt.Rows.Count; i++)
  8. {
  9. point = new SeriesPoint(dt.Rows[i]["week"].ToString(), Convert.ToDouble(dt.Rows[i]["money"].ToString()));
  10. series.Points.Add(point);
  11. point = new SeriesPoint(dt.Rows[i]["week"].ToString(), Convert.ToDouble(dt.Rows[i]["cost"].ToString()));
  12. series_cost.Points.Add(point);
  13. }
  14. this.WebChartControl1.Series.Add(series);
  15. this.WebChartControl1.Series.Add(series_cost);
  16. }

3,创建饼状图

和创建线状图一样,只需更改代码(ViewType.Pie)

  1. Series series = new Series("金额", ViewType.Line);
  2. Series series_cost = new Series("成本", ViewType.Line);

中的类型即可,修改后的代码如下:

  1. Series series = new Series("金额", ViewType.Pie);
  2. Series series_cost = new Series("成本", ViewType.Pie);

4,创建混合图

现在我们将金额的数据以线状显示,将成本的数据以柱状显示,改写Series对象的类型如下:

  1. Series series = new Series("金额", ViewType.Line);
  2. Series series_cost = new Series("成本", ViewType.Bar);
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注