彩票走势图

浅谈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.            for (int i = 0; i < dt.Rows.Count; i++)

  72.     &nbsp;      {

  73.          &nbsp;     //创建对象

  74.    &nbsp;           ColumnChart mychart = new ColumnChart();

  75.                //设置柱子宽度

  76.                mychart.MaxColumnWidth = 48;

  77.       &nbsp;        //颜色

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

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

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

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

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

  83.         &nbsp;      //添加

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

  85.                //备注

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

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

  88.         &nbsp;  }

  89.          &nbsp; //辅助设置

  90.            //背景色

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

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

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

  94.      &nbsp;     //内部线条

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

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

  97.            chart.BorderStyle = BorderStyle.None;

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

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

  100.  ; ;         //递增值

  101.            int intv = 2;

  102.

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

  104.&nbsp;           if (max < 16)

  105.   &nbsp;        {

  106.        &nbsp;       max = 16;

  107.&nbsp; &nbsp;         }

  108.            //大于16的情况

  109.            else

  110.    &nbsp;       {

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

  112.          &nbsp;&nbsp;    max += intv;

  113.        &nbsp;   }

  114.

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

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

  117.      &nbsp;     //y递增值

  118.          &nbsp; chart.YValuesInterval = intv;

  119.

  120.  &nbsp;         //生成

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

  122.        }

  123.    }

  124.}

 


标签:

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

文章转载自:网络转载

为你推荐

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


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP