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报表控件

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

  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. xml结构

    一.XmlHelper using System; using System.Collections.Generic; using System.Linq; using System.Web; usi ...

  2. pure的bug记录2

    <select id="stacked-state" style=" font-family: "Microsoft YaHei"; " ...

  3. 使用Moses中tokenizer.perl无法正常工作:纠结的"<" 和">"(已解决)

    发现居然没有输入文本和输出文本,折腾了一晚上,到了半夜终于搞懂了: 官方的Manual上这么写的: The tokenisation can be run as follows: ~/mosesdec ...

  4. XAML(3) - 附带属性

    WPF元素也可以从父元素中获得特性.例如,如果Button元素为了Canvas元素中,按钮的Top和Lef属性把父元素的名称作为前缀.这种属性成为附带属性: <Canvas> <Bu ...

  5. String类详解,StringBuffer

    先说一下String类的equals()方法. 下面我们先看一段代码: 这段代码输出的结果为: ture true -------------- false 咋看之下貌似Object类比较特别,那么我 ...

  6. Swift的一些基础内容

    //①判断字符串是否为空的方法 isEmpty var str:String = "www.baidu.com" if str.isEmpty { print("空字符串 ...

  7. CoreLocation简单应用

    1.获取locationManager let locationManager: CLLocationManager = CLLocationManager() 2.设置locationManager ...

  8. H5 input type="search" 不显示搜索 解决方法

    在IOS(ipad iPhone等)系统的浏览器里打开H5页面.如下写法: <input type="search" name="search” id=" ...

  9. 55.ERROR:Place:1136 - This design contains a global buffer instance…… non-clock load pins off chip

    ISE在布局布线时,出现下图所示错误. 对于"clock_dedicated_route”错误原因有两种情况: 1.  就是有一个时钟你没有放到全局时钟或者局部时钟的引脚,布局的时候不能把它 ...

  10. Haskell 趣学指南 入门笔记(二)

    显示类型声明,Haskell是不用定义类型的原因,很像python 想要确定某个表达式的类型 *Main> :t 'a' 'a' :: Char *Main> :t True True : ...