半岛外围网上直营

浅谈ASP.NET报表控件

转帖|其它|编辑:郝浩|2010-08-30 13:46:29.000|阅读 1230 次

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

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

  项目中有报表图形化的需求, 于是开始在网上找第三方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报表控件一、折线图

  1.//引用命名空间

  2.using WebChart;

  3.

  4.//定义一个颜色数组,供循环时为不同的记录填充不同的颜色

  5.private string[] myColor = new string[]

  6.{

  7.    "Tomato",//西红柿

  8.    "Black",

  9.    "Gold",

  10.    "Blue",

  11.    "Green",

  12.    "Orange",

  13.    "Pink",//粉红

  14.    "Violet",//紫罗兰

  15.    "Orchid",//淡紫色

  16.    "Lime",//亮绿

  17.    "Tan",//茶色

  18.    "Red",

  19.    "Navy"//橘红

  20.};

  21.

  22.//用静态方式示例了画出一条两个点的最简单折线.实际项目据此做循环而以.

  23.private void doIt()

  24.{

  25.    //创建折线对象

  26.    LineChart myChart = new LineChart();

  27.    //为折线填充颜色

  28.    myChart.Line.Color = Color.FromName(myColor[0]);

  29.    myChart.Fill.Color = Color.FromName(myColor[0]);

  30.    myChart.LineMarker = new DiamondLineMarker(8, Color.FromName(myColor[0]), Color.FromName(myColor[0]));

  31.    //图例说明

  32.    myChart.Legend = "折线一";

  33.    //添加第一个点,参数一为x座标上的名称,参数二为y座标上的值

  34.    myChart.Data.Add(new ChartPoint("一", float.Parse("100")));

  35.    //添加第二个点

  36.    myChart.Data.Add(new ChartPoint("二", float.Parse("200")));

  37.    //chart为控件ID

  38.    this.chart.Charts.Add(myChart);

  39.    this.chart.RedrawChart();

  40.}

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

  41.//颜色数组

  42.private string[] myColor = new string[]

  43.{

  44.    "Fuchsia",

  45.    "Black",

  46.    "Gold",

  47.    "Blue",

  48.    "HotPink",

  49.    "Orange",

  50.    "Peru",

  51.    "DodgerBlue",

  52.    "Lime",

  53.    "Tan",

  54.    "Red",

  55.    "GreenYellow",

  56.    "DarkGreen",

  57.    "DimGray",

  58.    "Orchid"

  59.};

  60.

  61.//调用该方法生成柱状图

  62.private void bindchart()

  63.{

  64.    //获取一个DataTable,具体函数略...

  65.    DataTable dt = this.getdt();

  66.    if (dt != null)

  67.    {

  68.        if (dt.Rows.Count > 0)

  69.        {

  70.            //遍历DataTable为每条记录生成一个柱状

  71. &nbsp;        &nbsp; for (int i = 0; i < dt.Rows.Count; i++)

  72.       ;     {

  73.    &nbsp;           //创建对象

  74.                ColumnChart mychart = new ColumnChart();

  75.                //设置柱子宽度

  76.         &nbsp;      mychart.MaxColumnWidth = 48;

  77.                //颜色

  78.    &nbsp;           mychart.Fill.Color = Color.FromName(this.myColor[i]);

  79.                //在柱子上显示数量

  80.&nbsp;               mychart.DataLabels.Visible = true;

  81.              &nbsp; //数量的字体

  82.            &nbsp;&nbsp;  mychart.DataLabels.Font = new Font("Verdana", 14);

  83.                //添加

  84.           &nbsp;    mychart.Data.Add(new ChartPoint("", float.Parse(dt.Rows[i]["num"].ToString())));

  85. &nbsp;              //备注

  86.         ;       mychart.Legend = dt.Rows[i]["name"].ToString();

  87.                this.chart.Charts.Add(mychart);

  88.          &nbsp; }

  89.        &nbsp; &nbsp; //辅助设置

  90.     &nbsp;&nbsp;     //背景色

  91.          &nbsp; chart.Background.Color = Color.FromArgb(165, 0, 16);

  92.     &nbsp;      chart.YAxisFont.ForeColor = Color.FromArgb(165, 0, 16);

  93.            chart.XAxisFont.ForeColor = Color.FromArgb(165, 0, 16);

  94.     &nbsp;      //内部线条

  95.           ; chart.Border.Color = Color.FromArgb(200, 200, 200);

  96.      ;  &nbsp;   //边框样式

  97.&nbsp;           chart.BorderStyle = BorderStyle.None;

  98.      &nbsp;  ;   //y最大值

  99.            double max = double.Parse(dt.Compute("MAX(num)","&quot;).ToString());

  100.    &nbsp;       //递增值

  101.   &nbsp;&nbsp;       int intv = 2;

  102.

  103.            //数量小于16的情况

  104.            if (max < 16)

  105.     &nbsp;      {

  106.      &nbsp;   &nbsp;     max = 16;

  107.     &nbsp;&nbsp;     }

  108.   ;         //大于16的情况

  109.     &nbsp;   &nbsp;  else

  110.            {

  111.             &nbsp;  intintv = int.Parse(Math.Ceiling(max/8).ToString());

  112.   &nbsp;            max += intv;

  113.   &nbsp;        }

  114.

  115.            //设置Y轴终点值

  116.&nbsp;           chart.YCustomEnd = int.Parse(max.ToString());

  117.            //y递增值

  118.       &nbsp;    chart.YValuesInterval = intv;

  119.

  120.    &nbsp;       //生成

  121.       ;  &nbsp;  this.chart.RedrawChart();

  122.        }

  123.    }

  124.}

 


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@ke049m.cn

文章转载自:网络转载

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP
利记足球官网(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) 真人boyu·博鱼滚球网(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) 最大网上PM娱乐城盘口(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) 正规雷火竞技官方买球(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) 雷火竞技权威十大网(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) boyu·博鱼信誉足球官网(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) 权威188BET足球网(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) 正规188BET足球大全(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新)