浅谈ASP.NET报表控件

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

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

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

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

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

折线图

//引用命名空间  
using WebChart;  
 
//定义一个颜色数组,供循环时为不同的记录填充不同的颜色  
private string[] myColor = new string[]  
{  
    "Tomato",//西红柿  
    "Black",  
    "Gold",  
    "Blue",  
    "Green",  
    "Orange",  
    "Pink",//粉红  
    "Violet",//紫罗兰  
    "Orchid",//淡紫色  
    "Lime",//亮绿  
    "Tan",//茶色  
    "Red",  
    "Navy"//橘红  
};  
 
//用静态方式示例了画出一条两个点的最简单折线.实际项目据此做循环而以.  
private void doIt()  
{  
    //创建折线对象  
    LineChart myChart = new LineChart();  
    //为折线填充颜色  
    myChart.Line.Color = Color.FromName(myColor[0]);  
    myChart.Fill.Color = Color.FromName(myColor[0]);  
    myChart.LineMarker = new DiamondLineMarker(8, Color.FromName(myColor[0]), Color.FromName(myColor[0]));  
    //图例说明  
    myChart.Legend = "折线一";  
    //添加***个点,参数一为x座标上的名称,参数二为y座标上的值  
    myChart.Data.Add(new ChartPoint("一", float.Parse("100")));  
    //添加第二个点  
    myChart.Data.Add(new ChartPoint("二", float.Parse("200")));  
    //chart为控件ID  
    this.chart.Charts.Add(myChart);  
    this.chart.RedrawChart();  

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.

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

柱状图
//颜色数组  
private string[] myColor = new string[]  
{  
    "Fuchsia",  
    "Black",  
    "Gold",  
    "Blue",  
    "HotPink",  
    "Orange",  
    "Peru",  
    "DodgerBlue",  
    "Lime",  
    "Tan",  
    "Red",  
    "GreenYellow",  
    "DarkGreen",  
    "DimGray",  
    "Orchid"  
};  
 
//调用该方法生成柱状图  
private void bindchart()  
{  
    //获取一个DataTable,具体函数略...  
    DataTable dt = this.getdt();  
    if (dt != null)  
    {  
        if (dt.Rows.Count > 0)  
        {  
            //遍历DataTable为每条记录生成一个柱状  
            for (int i = 0; i < dt.Rows.Count; i++)  
            {  
                //创建对象  
                ColumnChart mychart = new ColumnChart();  
                //设置柱子宽度  
                mychart.MaxColumnWidth = 48;  
                //颜色  
                mychart.Fill.Color = Color.FromName(this.myColor[i]);  
                //在柱子上显示数量  
                mychart.DataLabels.Visible = true;  
                //数量的字体  
                mychart.DataLabels.Font = new Font("Verdana", 14);  
                //添加  
                mychart.Data.Add(new ChartPoint("", float.Parse(dt.Rows[i]["num"].ToString())));  
                //备注  
                mychart.Legend = dt.Rows[i]["name"].ToString();  
                this.chart.Charts.Add(mychart);  
            }  
            //辅助设置  
            //背景色  
            chart.Background.Color = Color.FromArgb(165, 0, 16);  
            chart.YAxisFont.ForeColor = Color.FromArgb(165, 0, 16);  
            chart.XAxisFont.ForeColor = Color.FromArgb(165, 0, 16);  
            //内部线条  
            chart.Border.Color = Color.FromArgb(200, 200, 200);  
            //边框样式  
            chart.BorderStyle = BorderStyle.None;  
            //y***值  
            double max = double.Parse(dt.Compute("MAX(num)","").ToString());  
            //递增值  
            int intv = 2;  
 
            //数量小于16的情况  
            if (max < 16)  
            {  
                max = 16;  
            }  
            //大于16的情况  
            else  
            {  
                intintv = int.Parse(Math.Ceiling(max/8).ToString());  
                max += intv;  
            }  
 
            //设置Y轴终点值  
            chart.YCustomEnd = int.Parse(max.ToString());  
            //y递增值  
            chart.YValuesInterval = intv;  
 
            //生成  
            this.chart.RedrawChart();  
        }  
    }  

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.
  • 81.
  • 82.
  • 83.
  • 84.

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

【编辑推荐】

  1. ASP.NET环境下的Shell函数
  2. 在ASP.NET中向数据库批量插入数据
  3. ASP.NET用Post方式向网页发送数据
  4. ASP.NET 2.0部署WEB应用程序浅析
  5. ASP.NET中的HttpWorkerRequest对像
  6. ASP.NET 2.0中的OWC组件前夕
责任编辑:彭凡 来源: cnblogs
相关推荐

2009-07-24 10:52:42

ASP.NET ISA

2009-08-04 17:18:37

2009-07-20 15:30:11

ASP.NET应用

2009-07-22 16:11:43

ASP.NET AJA

2009-08-05 15:29:33

ASP.NET For

2009-07-23 15:44:39

ASP.NET MVC

2009-07-28 17:49:30

ASP.NET定期回收

2009-07-20 17:12:17

ASP.NET访问数据

2009-07-28 16:03:23

ASP.NET状态服务

2009-08-10 10:19:47

ASP.NET组件设计

2009-07-22 13:24:24

ASP.NET MVC

2009-08-03 17:56:25

ASP.NET 数据控

2009-07-29 09:29:06

ASP.NET水晶报表

2009-07-23 15:24:37

ASP.NET Ima

2011-08-23 10:58:59

2009-07-21 14:16:02

ASP.NET管道优化

2009-08-05 15:57:03

ASP.NET控件ID

2009-07-29 13:50:26

UpdatePanelASP.NET

2009-08-04 10:43:59

ASP.NET控件开发

2009-08-19 13:44:00

ASP.NET Lis
点赞
收藏

51CTO技术栈公众号