彩票走势图

浅谈ASP.NET报表控件

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

概述:项目中有报表图形化的需求, 于是开始在网上找第三方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;       for (int i = 0; i < dt.Rows.Count; i++)

  72. ;           {

  73.   ;             //创建对象

  74.                ColumnChart mychart = new ColumnChart();

  75.  &nbsp;      ;       //设置柱子宽度

  76.          &nbsp;     mychart.MaxColumnWidth = 48;

  77.&nbsp;       &nbsp;       //颜色

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

  79.             &nbsp;  //在柱子上显示数量

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

  81.                //数量的字体

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

  83.     &nbsp;          //添加

  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.            &nbsp;   this.chart.Charts.Add(mychart);

  88.  ;          }

  89.            //辅助设置

  90.       &nbsp;    //背景色

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

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

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

  94.          &nbsp; //内部线条

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

  96.     &nbsp;      //边框样式

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

  98.            //y最大值

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

  100.      &nbsp;     //递增值

  101.   &nbsp;        int intv = 2;

  102.

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

  104.   &nbsp;        if (max < 16)

  105.            {

  106.   &nbsp;            max = 16;

  107. &nbsp;          }

  108. ;        &nbsp;  //大于16的情况

  109.            else

  110.      &nbsp;     {

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

  112.     &nbsp;          max += intv;

  113.   ;         }

  114.

  115.    &nbsp; &nbsp;     //设置Y轴终点值

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

  117.  ;&nbsp;         //y递增值

  118.      &nbsp;     chart.YValuesInterval = intv;

  119.

  120.    &nbsp;       //生成

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

  122.&nbsp;       }

  123.    }

  124.}

 


标签:

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

文章转载自:网络转载

为你推荐

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


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP