项目中有报表图形化的需求, 于是开始在网上找第三方chart控件。因时间紧迫,大至确定了几个候选:一、Office带的OWC控件;二、ComponentOne;三、Web Chart。本文将讲解ASP.NET报表控件。

AD:2014WOT全球软件技术峰会北京站 课程视频发布

OWC似乎使用者居多,但看见有网友在帖中抱怨OWC在使用时需要许可证书,于是将其排除,我可不想BOSS在看报表时弹出一个“没有许可证书”的窗口。

接着找到了ComponentOne的Web chart做出的各种效果图,效果极佳。我一下子被迷住了,决定就是它,于是马不停蹄的下了最新版100多M的安装文件,又花一上午找了个可以用的注册码,再找了篇教程,OK万事俱备,兴匆匆的开始写代码。需求不复杂,在一个页面上画出多条折线图即可,根据以往经验,这种大型商业共享软件在官方站点上看两个Example顶多一小时绝对能搞定的。但结果让我非常的恼火,官方的Example简单的它偏不提供,弄些什么AJAX的,一大堆实现辅助效果的代码,你要找的核心的那三四行打死也找不到,好像就怕你一下子把它的Example看明白了。历来讨厌这种软件。于是卸载、删除......等全部弄完,一天过去了。

还好,后来找到了Web Chart。代码超简洁,效果也还不错,写些简单的ASP.NET报表控件示例供大家参考:

ASP.NET报表控件一、折线图

  1. //引用命名空间
  2. using WebChart;
  3. //定义一个颜色数组,供循环时为不同的记录填充不同的颜色
  4. private string[] myColor = new string[]
  5. {
  6. "Tomato",//西红柿
  7. "Black",
  8. "Gold",
  9. "Blue",
  10. "Green",
  11. "Orange",
  12. "Pink",//粉红
  13. "Violet",//紫罗兰
  14. "Orchid",//淡紫色
  15. "Lime",//亮绿
  16. "Tan",//茶色
  17. "Red",
  18. "Navy"//橘红
  19. };
  20. //用静态方式示例了画出一条两个点的最简单折线.实际项目据此做循环而以.
  21. private void doIt()
  22. {
  23. //创建折线对象
  24. LineChart myChart = new LineChart();
  25. //为折线填充颜色
  26. myChart.Line.Color = Color.FromName(myColor[0]);
  27. myChart.Fill.Color = Color.FromName(myColor[0]);
  28. myChart.LineMarker = new DiamondLineMarker(8, Color.FromName(myColor[0]), Color.FromName(myColor[0]));
  29. //图例说明
  30. myChart.Legend = "折线一";
  31. //添加第一个点,参数一为x座标上的名称,参数二为y座标上的值
  32. myChart.Data.Add(new ChartPoint("一", float.Parse("100")));
  33. //添加第二个点
  34. myChart.Data.Add(new ChartPoint("二", float.Parse("200")));
  35. //chart为控件ID
  36. this.chart.Charts.Add(myChart);
  37. this.chart.RedrawChart();
  38. }

ASP.NET报表控件二、柱状图

  1. //颜色数组
  2. private string[] myColor = new string[]
  3. {
  4. "Fuchsia",
  5. "Black",
  6. "Gold",
  7. "Blue",
  8. "HotPink",
  9. "Orange",
  10. "Peru",
  11. "DodgerBlue",
  12. "Lime",
  13. "Tan",
  14. "Red",
  15. "GreenYellow",
  16. "DarkGreen",
  17. "DimGray",
  18. "Orchid"
  19. };
  20. //调用该方法生成柱状图
  21. private void bindchart()
  22. {
  23. //获取一个DataTable,具体函数略...
  24. DataTable dt = this.getdt();
  25. if (dt != null)
  26. {
  27. if (dt.Rows.Count > 0)
  28. {
  29. //遍历DataTable为每条记录生成一个柱状
  30. for (int i = 0; i < dt.Rows.Count; i++)
  31. {
  32. //创建对象
  33. ColumnChart mychart = new ColumnChart();
  34. //设置柱子宽度
  35. mychart.MaxColumnWidth = 48;
  36. //颜色
  37. mychart.Fill.Color = Color.FromName(this.myColor[i]);
  38. //在柱子上显示数量
  39. mychart.DataLabels.Visible = true;
  40. //数量的字体
  41. mychart.DataLabels.Font = new Font("Verdana", 14);
  42. //添加
  43. mychart.Data.Add(new ChartPoint("", float.Parse(dt.Rows[i]["num"].ToString())));
  44. //备注
  45. mychart.Legend = dt.Rows[i]["name"].ToString();
  46. this.chart.Charts.Add(mychart);
  47. }
  48. //辅助设置
  49. //背景色
  50. chart.Background.Color = Color.FromArgb(165, 0, 16);
  51. chart.YAxisFont.ForeColor = Color.FromArgb(165, 0, 16);
  52. chart.XAxisFont.ForeColor = Color.FromArgb(165, 0, 16);
  53. //内部线条
  54. chart.Border.Color = Color.FromArgb(200, 200, 200);
  55. //边框样式
  56. chart.BorderStyle = BorderStyle.None;
  57. //y最大值
  58. double max = double.Parse(dt.Compute("MAX(num)","").ToString());
  59. //递增值
  60. int intv = 2;
  61. //数量小于16的情况
  62. if (max < 16)
  63. {
  64. max = 16;
  65. }
  66. //大于16的情况
  67. else
  68. {
  69. intintv = int.Parse(Math.Ceiling(max/8).ToString());
  70. max += intv;
  71. }
  72. //设置Y轴终点值
  73. chart.YCustomEnd = int.Parse(max.ToString());
  74. //y递增值
  75. chart.YValuesInterval = intv;
  76. //生成
  77. this.chart.RedrawChart();
  78. }
  79. }
  80. }

Web Chart为免费ASP.NET报表控件,需要的朋友可去官方地址下载:http://www.carlosag.net/Tools/WebChart/Default.aspx,上面还有很多效果和代码示例。

(转)浅谈ASP.NET报表控件的更多相关文章

  1. 浅谈ASP.NET报表控件

    OWC似乎使用者居多,但看见有网友在帖中抱怨OWC在使用时需要许可证书,于是将其排除,我可不想BOSS在看报表时弹出一个“没有许可证书”的窗口. 接着找到了ComponentOne的Web chart ...

  2. 浅谈WPF中对控件的位图特效(WPF Bitmap Effects)

    原文:浅谈WPF中对控件的位图特效(WPF Bitmap Effects) -------------------------------------------------------------- ...

  3. 浅谈简单实现file控件的图片预览,裁剪和上传。

    1.图片预览之FileReader对象    FileReader 对象允许Web应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容,使用File或Blob对象指定要读取的文件或数据 ...

  4. 在ASP.NET MVC 中使用ActiveReports报表控件

    随着MVC模式的广泛运用,对Web应用系统的开发带来了巨大的影响,我们好像又回到了原来的ASP时代,视乎这是一种后退而不是一种进步,不过MVC模式给我们带来的影响不仅限于我们所看到的这一点..MVC看 ...

  5. 【ASP.NET MVC系列】浅谈ASP.NET 页面之间传值的几种方式

    ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...

  6. 【ASP.NET MVC系列】浅谈ASP.NET MVC运行过程

    ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...

  7. ActiveReports 报表控件官方中文入门教程 (1)-安装、激活以及产品资源

    本系列文章主要是面向初次接触 ActiveReports 产品的用户,可以帮助您在三天之内轻松的掌握ActiveReports控件的基本使用方法,包括安装.激活.创建报表.绑定数据源以及发布等内容.本 ...

  8. ActiveReports 报表控件官方中文入门教程 (2)-创建、数据源、浏览以及发布

    本篇文章将阐述首次使用 ActiveReports 报表控件 的方法,包括添加报表文件.绑定数据源以及如何发布报表等内容. ActiveReports 报表控件官方中文入门教程 (1)-安装.激活以及 ...

  9. 在网页中编辑报表的报表设计器Stimulsoft Reports Designer.Web报表控件

    Stimulsoft Reports Designer.Web报表控件是一款网页报表设计器.您想在网页中编辑您的报表吗?现在是可能的! Stimulsoft Reports Designer.Web ...

随机推荐

  1. VS2010 ReportViewer导出文件下载保存不能识别文件类型

    今天测试项目时,突然发现导出报表下载保存的保存,不能识别文件的类型,文件名称为:.xls[3] 检查代码发现在指定报表路径时多了一个方法: ReportViewer1.LocalReport.Load ...

  2. pods的问题处理

    在使用pods添加的第三方删除的时候不能直接删除第三方,否则会出现

  3. Combination Sum,Combination Sum II,Combination Sum III

    39. Combination Sum Given a set of candidate numbers (C) and a target number (T), find all unique co ...

  4. 锋利jQuery 学习整理之 第六章 jQuery 与Ajax 的应用

    1.Ajax 的XMLHttpRequest 对象 XMLHttpRequest 是Ajax 的核心,它是Ajax 实现的关键---发送异步请求.接受响应及执行回调都是通过它来完成的.XMLHttpR ...

  5. keepalived+httpd 做web服务的高可用

    场景: 环境中有两台httpd服务器,一台做主,一台做备用:平时只用主向外提供http服务:当主宕机后,keepalived把vip绑定到备机上去,这样就由备机提供http服务了. **keepalv ...

  6. jquery实现当前页面编辑

    实现效果 代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://ww ...

  7. mongoexport导出数据

    mongoexport用法: /***** Export MongoDB data to CSV, TSV or JSON files.options:  --help                 ...

  8. mysql下怎样运行脚本

    假设要运行脚本: F:\hello world\niuzi.sql 第一种方法:        在命令行下(未连接数据库),输入 mysql -h localhost -u root  -p < ...

  9. shell 脚本监控程序是否正在执行, 如果没有执行, 则自动启动该进程

    代码里面监控1个进程, 代码很简单, 我就不讲解了, 有不懂的, 可以在回复里面问. 我看见了会给予讲解. 当然了, 该脚本要执行,你需要开启系统的定时器进程 crond , 并且编辑配置文件. 执行 ...

  10. PowerShell常用的属性

    get-location | get-member  -membertype  property -------获取对象的属性---------- 获取对象特定的成员, 湖区.Net Framwork ...