项目中有报表图形化的需求, 于是开始在网上找第三方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. c# 取得扩展名

    string KZM=files[0].FileName.Substring(files[0].FileName.LastIndexOf(".") + 1);

  2. win8 安装myeclipse 失败 MyEclipse ForSpring 安装失败

    好像是main方法.jar无法载入之类的.. 可能是权限的问题哦.. 使用管理员权限试一下..

  3. nginx配置时的一些问题

    在配置nginx的时候出现的一些问题,在此记录: 1.如何打开nginx服务: 方法1:打开解压的下载文件,双击打开nginx.exe即可(出现闪退,我以为是出问题了,其实是服务已经启动了) 方法2: ...

  4. BZOJ 2243 SDOI 2011染色

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2243 算法讨论: 树链剖分把树放到线段树上.然后线段树的每个节点要维护的东西有左端点的颜色 ...

  5. 虚函数—c++的灵魂

    <note_content />   虚函数 C++中的虚函数的作用主要是实现了多态的机制.关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数 ...

  6. [Leetcode] Longest Consecutive Sequence 略详细 (Java)

    题目参见这里 https://leetcode.com/problems/longest-consecutive-sequence/ 这个题目我感觉很难,看了半天别人写的答案,才明白个所以然.下面的代 ...

  7. ​C语言数组作为函数参数

    数组可以作为函数的参数使用,进行数据传送. 数组用作函数参数有两种形式,一种是把数组元素(下标变量)作为实参使用:另一种是把数组名作为函数的形参和实参使用. 数组元素作函数实参 数组元素就是下标变量, ...

  8. sqlalchemy操作Mysql

    SQLAlchemy“采用简单的Python语言,为高效和高性能的数据库访问设计,实现了完整的企业级持久模型”.SQLAlchemy的理念是,SQL数据库的量级和性能重要于对象集合:而对象集合的抽象又 ...

  9. Oracle 10.2数据库管理员指南-27章

    27使用调度程序 Oracle Database provides database job capabilities through Oracle Scheduler (the Scheduler) ...

  10. 从ASM迁移到ARM(1):平台支持的迁移服务

    Azure上的ARM模式为用户带来更好的管理,更多新的特性,更好的体验,因此目前正在使用经典模式(ASM)的用户,在了解和使用了ARM之后,也在考虑如何将原来基于ASM模式的虚拟机,存储,网络等IAA ...