项目中有报表图形化的需求, 于是开始在网上找第三方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. Asp.net中实现同一用户名同时登陆,注销先前用户(转)

    Web 项目中经常遇到的问题就是同一用户名多次登陆的问题,相应的解决办法也很多,总结起来不外乎这几种解决办法:将登陆后的用户名放到数据库表中:登陆后的用 户名放到Session中:登陆后的用户名放到A ...

  2. String StringBuffer StringBuilder (转)

    转自:http://www.iteye.com/topic/522167 众所周知,String是由字符组成的串,在程序中使用频率很高.Java中的String是一个类,而并非基本数据类型. 不过她却 ...

  3. CODEVS 3279 奶牛的健美操

    3279 奶牛健美操 USACO  时间限制: 2 s  空间限制: 256000 KB  题目等级 : 钻石 Diamond 题目描述 Description Farmer John为了保持奶牛们的 ...

  4. Python提取图片的ROI

    图像处理经常需要提取图片的ROI,本文使用Python提取图片的ROI. 使用的Module是PIL (Pillow),一个图像处理库,用到的函数为类 Image 中的 crop 方法. 函数原型为: ...

  5. C# 数据实现设计模式

    一个人没事,写了一个底层数据实现读取设计模式,个人觉得还是蛮好扩展,里面有不足的地方希望大家给予指导.话不多说先看个图吧!图可能不正规,伤害了你的眼睛见谅.有图有真相 其实这个设计模式,就是一个简单的 ...

  6. 转载:s:if的用法

    转载网址:http://blog.csdn.net/menhuanxiyou/article/details/5709550 1:直接写表达式 <s:set name="china&q ...

  7. LNMP环境出现”504 gateway time-out”错误的解决方案

    今天下午在调试测试VPS机器的时候,出现"504 gateway time-out"错误提示.VPS是安装的LNMP一键安装包,关于这个错误之前还没有见过,网上看到比较多的是502 ...

  8. [1] Tornado Todo Day0

    Github地址: day0 初始化数据库: jakeychen@JC:~/Public/tornado_todo$ pwd /home/jakeychen/Public/tornado_todo j ...

  9. ACboy needs your help(HDU 1712 分组背包入门)

    ACboy needs your help Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  10. memcached在Windows下的安装

    memcached简介详情请谷歌.这里介绍如何在windows下安装. 1.下载     下载地址:http://download.csdn.net/detail/u010562988/9456109 ...