ASP.NET统计图表控件

  近来客户需要将前段时间开发的统计信息用图表展示出来,还要多个图表类型,例如:柱状图、饼图、曲线图、三维图等等。在网上google了一下,发现了三个(也许更多)可以使用的控件。下面我们一起看看这三个控件。

  1、OWC11

      这个控件全称是:Office Web Component 11,是office2003中的一个组件,可惜的是office2007中没有了它的身影。不过安装office2003之后可以引用,然后使用。使用过的人都知道,就是它的效果要差一点。

  2、dotnetCharting

     http://www.dotnetcharting.com/

     dotnetcharting是国外的一个产品,是要收费的。具体还没有使用,后面在我尝试之后,我会添加一些使用范例。大家也可以上网搜索一下,很多的列子。

  3、MSChart  

  

  微软发布了.NET 3.5框架下的图表控件,发觉功能很强劲,基本上能想到的图表都可以使用它绘制出来,给图形统计和报表图形显示提供了很好的解决办法,同时支持Web和WinForm两种方式,不过缺点也比较明显,只能在最新的开发环境中使用,需要.Net 3.5 Sp1以及VS 2008的开发环境。


     

   MSChart在ASP.NET中的使用,需要设置web.config文件,可以参看下面的链接:

  http://www.cnblogs.com/carysun/archive/2009/03/15/MSChart.html

  http://www.cnblogs.com/bluetiger/archive/2009/03/02/1401457.html

  MSChart在SharePoint2007中的使用,同样也需要设置web.config文件,可以参看下面的链接:

  http://203.208.37.132/search?q=cache:Z-9ssAVpmvAJ:mosshowto.blogspot.com/2008/11/chart-controls-net-framework-sharepoint.html+chart-controls-net-framework-sharepoint&cd=1&hl=zh-CN&ct=clnk&gl=cn&st_usg=ALhdy29hK0fVcB5wJnNBG2PNHMVBa0HE3w 

  http://social.msdn.microsoft.com/Forums/en/MSWinWebChart/thread/6eed0b12-9334-4ef5-9d1e-6da1c43d791a

  http://social.msdn.microsoft.com/Forums/en-US/sharepointdevelopment/thread/649a4639-06ad-4483-9b2a-9b64a9eab0b3

    

  下面是下载地址:

    控件:Microsoft .NET Framework 3.5 的 Microsoft 图表控件(Microsoft Chart Controls for Microsoft .NET Framework 3.5)–

包含英文版,中文版。上面提供的链接是中文版的,可以更改为英文版。

语言包:Microsoft Chart Controls for Microsoft .NET Framework 3.5 Language Pack 

Microsoft .NET Framework 3.5 的Microsoft 图表控件 的语言包,包含23中语言。

Microsoft Chart Controls Add-on for Microsoft Visual Studio 2008

这个只有英文的,没找到中文的。

文档 (Microsoft Chart Controls for .NET Framework Documentation) 

这个只有英文的,没找到中文的。

WinForm 和 Asp.net的例子(Samples Environment for Microsoft Chart Controls) – 

这个只有英文的,没找到中文的。

Demo 下载:http://code.msdn.microsoft.com/mschart

 

 

ContractedBlock.gif ExpandedBlockStart.gif 页面代码
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--> <% @ Page Language = " C# "  AutoEventWireup = " true "  CodeBehind = " Chart.aspx.cs "  Inherits = " BeautyCode.SharePoint.MVPDemo.Pages.Chart "   %>

<% @ Register Assembly = " System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 "
    Namespace
= " System.Web.UI.DataVisualization.Charting "  TagPrefix = " asp "   %>
<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
< html  xmlns ="http://www.w3.org/1999/xhtml" >
< head  runat ="server" >
    
< title ></ title >
</ head >
< body >
    
< form  id ="form1"  runat ="server" >
    
< div >
        
< fieldset >
            
< legend > ddd </ legend >
            
< asp:Chart  ID ="Chart1"  runat ="server" >
                
< Titles >
                    
< asp:Title  Name ="Title"  Text ="Title1" >
                    
</ asp:Title >
                
</ Titles >
                
< Annotations  >
                
< asp:TextAnnotation  Text ="" ></ asp:TextAnnotation >
                
</ Annotations >
          
                
< Legends >
                
< asp:Legend  Title  ="" ></ asp:Legend >
                
</ Legends >
                
< MapAreas >
                
</ MapAreas >
                
< Series >
                  
                
</ Series >
                
< ChartAreas >
                    
< asp:ChartArea  Name ="ChartAreas1" >
                    
</ asp:ChartArea >
                
</ ChartAreas >
            
</ asp:Chart >
        
</ fieldset >
    
</ div >
    
< div >
        
< asp:Chart  ID ="Chart2"  runat ="server" >
            
< Series >
                
            
</ Series >
            
< Legends >
                
< asp:Legend  Title  ="" ></ asp:Legend >
                
</ Legends >
            
< ChartAreas >
                
< asp:ChartArea  Name ="ChartAreas1" >
                
</ asp:ChartArea >
               
            
</ ChartAreas >
        
</ asp:Chart >
    
</ div >
    
</ form >
</ body >
</ html >

 

ContractedBlock.gif ExpandedBlockStart.gif 后台代码
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--> using  System;
using  System.Collections.Generic;
using  System.Linq;
using  System.Web;
using  System.Data;
using  System.Web.UI;
using  System.Web.UI.WebControls;
using  Microsoft.Office.Core;
using  Microsoft.Office.Interop.Owc11;
using  Microsoft.Office.Interop;
using  System.Web.UI.DataVisualization.Charting;

namespace  BeautyCode.SharePoint.MVPDemo.Pages
{
    
public   partial   class  Chart : System.Web.UI.Page
    {
        
private  DataTable _SampleDataTable;
        
private  DataTable _InSchool;
        
protected   void  Page_Load( object  sender, EventArgs e)
        {
            
if  ( ! IsPostBack)
            {
                PaintChart1();
                PaintChart2();
            }
        }
        
private   void  CreateDataTable()
        {
            _SampleDataTable 
=   new  DataTable();
            _SampleDataTable.Columns.Add(
" jx " );
            _SampleDataTable.Columns.Add(
" count " );

            DataRow row;

            row 
=  _SampleDataTable.NewRow();
            row[
0 =   " 上将 " ;
            row[
1 =   100 ;
            _SampleDataTable.Rows.Add(row);

            row 
=  _SampleDataTable.NewRow();
            row[
0 =   " 准将 " ;
            row[
1 =   400 ;
            _SampleDataTable.Rows.Add(row);

            row 
=  _SampleDataTable.NewRow();
            row[
0 =   " 大校 " ;
            row[
1 =   1000 ;
            _SampleDataTable.Rows.Add(row);

            row 
=  _SampleDataTable.NewRow();
            row[
0 =   " 上校 " ;
            row[
1 =   800 ;
            _SampleDataTable.Rows.Add(row);

            row 
=  _SampleDataTable.NewRow();
            row[
0 =   " 上尉 " ;
            row[
1 =   600 ;
            _SampleDataTable.Rows.Add(row);
        }
        
private   void  PaintChart1()
        {
            CreateDataTable();

            
this .Chart1.Titles[ " Title " ].Text  =   " 1000-8000年度总冠军 " ;
            
this .Chart1.Series.Add( new  Series( " 军衔 " ));
            
this .Chart1.Width  =   500 ;
            
#region  MSChart manual add data

            
// this.Chart1.Series["军衔"].Points.AddXY("上将", 20);
            
// this.Chart1.Series["军衔"].Points.AddXY("中将", 200);
            
// this.Chart1.Series["军衔"].Points.AddXY("准将", 40);
            
// this.Chart1.Series["军衔"].Points.AddXY("中校", 60);
            
// this.Chart1.Series["军衔"].Points.AddXY("少校", 100);
            
// this.Chart1.Series["军衔"].Points.AddXY("上尉", 48);
             #endregion

            
#region  MSChart DataSource Array

            
// int xy = _SampleDataTable.Rows.Count;
            
// List<string> jx = new List<string>();
            
// List<int> count = new List<int>();
            
// DataRowCollection rows = _SampleDataTable.Rows;
            
// foreach (DataRow row in rows)
            
// {
            
//     jx.Add(row["jx"].ToString());
            
//     count.Add(int.Parse(row["count"].ToString()));
            
// }
            
// this.Chart1.Series["军衔"].Points.DataBindXY(jx,count );
             #endregion

            
#region   MSChart DataSource DataTable
            
this .Chart1.DataSource  =  _SampleDataTable;
            
this .Chart1.Series[ " 军衔 " ].XValueMember  =   " jx " ;
            
this .Chart1.Series[ " 军衔 " ].XValueType  =  ChartValueType.String;
            
this .Chart1.Series[ " 军衔 " ].XAxisType  =  AxisType.Primary;

            
this .Chart1.Series[ " 军衔 " ].YValueMembers  =   " count " ;
            
this .Chart1.Series[ " 军衔 " ].YValueType  =  ChartValueType.Int32;
            
this .Chart1.Series[ " 军衔 " ].YAxisType  =  AxisType.Primary;
            
#endregion

            
#region

            
this .Chart1.Series[ " 军衔 " ].ChartType  =  SeriesChartType.Column;
            
this .Chart1.Series[ " 军衔 " ].BorderWidth  =   1 ;
            
this .Chart1.Series[ " 军衔 " ].IsVisibleInLegend  =   true ;
            
this .Chart1.Series[ " 军衔 " ].IsValueShownAsLabel  =   true ;
        
            
#endregion

            
#region

            
this .Chart1.ChartAreas[ " ChartAreas1 " ].AxisX.Title  =   " 军衔种类 " ;
            
this .Chart1.ChartAreas[ " ChartAreas1 " ].AxisY.Interval  =   200 ;
            
this .Chart1.ChartAreas[ " ChartAreas1 " ].AxisY.Title  =   " 学员总数 " ;
            
this .Chart1.ChartAreas[ " ChartAreas1 " ].AxisY.Maximum  =   1000 ;
            
this .Chart1.ChartAreas[ " ChartAreas1 " ].BorderDashStyle  =  ChartDashStyle.Solid;
            
this .Chart1.ChartAreas[ " ChartAreas1 " ].BorderWidth  =   1 ;
            
this .Chart1.ChartAreas[ " ChartAreas1 " ].AxisX.MajorGrid.LineWidth  =   0 ;
            
#endregion
        }


        
private   void  CreateInSchool()
        {
            _InSchool 
=   new  DataTable();
            _InSchool.Columns.Add(
" year " );
            _InSchool.Columns.Add(
" allyear " );
            _InSchool.Columns.Add(
" new " );
            _InSchool.Rows.Add(
" 2001 " 20 29 );
            _InSchool.Rows.Add(
" 2002 " 60 69 );
            _InSchool.Rows.Add(
" 2003 " 200 290 );
            _InSchool.Rows.Add(
" 2004 " 400 490 );
            _InSchool.Rows.Add(
" 2005 " 0 9 );
            _InSchool.Rows.Add(
" 2006 " 150 180 );
            _InSchool.Rows.Add(
" 2007 " 190 246 );
        }
      
        
private   void  PaintChart2()
        {
            CreateInSchool();
            
this .Chart2.Titles.Add( " 2001-2009年度总亚军 " );
            
this .Chart2.Width  =   800 ;
            
this .Chart2.Series.Add( new  Series( " 新增学员总数 " ));
            
this .Chart2.Series[ " 新增学员总数 " ].ChartType  =  SeriesChartType.Column;
            
this .Chart2.Series[ " 新增学员总数 " ].BorderWidth  =   1 ;
            
this .Chart2.Series[ " 新增学员总数 " ].IsVisibleInLegend  =   true ;
            
this .Chart2.Series[ " 新增学员总数 " ].IsValueShownAsLabel  =   true ;
           

            
#region

            
this .Chart2.Series[ " 新增学员总数 " ].ChartType  =  SeriesChartType.Column;
            
this .Chart2.Series[ " 新增学员总数 " ].BorderWidth  =   1 ;
            
this .Chart2.Series[ " 新增学员总数 " ].IsVisibleInLegend  =   true ;
            
this .Chart2.Series[ " 新增学员总数 " ].IsValueShownAsLabel  =   true ;
            
this .Chart2.Series[ " 新增学员总数 " ].ChartArea  =   " ChartAreas1 " ;
            
#endregion

            
#region

            
this .Chart2.ChartAreas[ " ChartAreas1 " ].AxisY.Interval  =   200 ;

            
this .Chart2.ChartAreas[ " ChartAreas1 " ].AxisY.Maximum  =   1000 ;
            
this .Chart2.ChartAreas[ " ChartAreas1 " ].BorderDashStyle  =  ChartDashStyle.Solid;
            
this .Chart2.ChartAreas[ " ChartAreas1 " ].BorderWidth  =   1 ;
            
this .Chart2.ChartAreas[ " ChartAreas1 " ].AxisX.MajorGrid.LineWidth  =   0 ;

            
#endregion

            
this .Chart2.Series.Add( new  Series( " 全年在校学员数 " ));

            
this .Chart2.Series[ " 全年在校学员数 " ].ChartType  =  SeriesChartType.Column;
            
this .Chart2.Series[ " 全年在校学员数 " ].BorderWidth  =   1 ;
            
this .Chart2.Series[ " 全年在校学员数 " ].IsVisibleInLegend  =   true ;
            
this .Chart2.Series[ " 全年在校学员数 " ].IsValueShownAsLabel  =   true ;

            
#region

            
this .Chart2.Series[ " 全年在校学员数 " ].ChartType  =  SeriesChartType.Column;
            
this .Chart2.Series[ " 全年在校学员数 " ].BorderWidth  =   1 ;
            
this .Chart2.Series[ " 全年在校学员数 " ].IsVisibleInLegend  =   true ;
            
this .Chart2.Series[ " 全年在校学员数 " ].IsValueShownAsLabel  =   true ;
            
this .Chart2.Series[ " 全年在校学员数 " ].ChartArea  =   " ChartAreas1 " ;
            
#endregion

            
#region

            
this .Chart2.ChartAreas[ " ChartAreas1 " ].AxisY.Interval  =   200 ;
            
this .Chart2.ChartAreas[ " ChartAreas1 " ].AxisY.Maximum  =   1000 ;
            
this .Chart2.ChartAreas[ " ChartAreas1 " ].BorderDashStyle  =  ChartDashStyle.Solid;
            
this .Chart2.ChartAreas[ " ChartAreas1 " ].BorderWidth  =   1 ;
            
this .Chart2.ChartAreas[ " ChartAreas1 " ].AxisX.MajorGrid.LineWidth  =   0 ;
            
#endregion
            
this .Chart2.DataSource  =  _InSchool;
            
this .Chart2.Series[ " 新增学员总数 " ].XValueMember  =   " year " ;
            
this .Chart2.Series[ " 新增学员总数 " ].XValueType  =  ChartValueType.Int32;
            
this .Chart2.Series[ " 新增学员总数 " ].XAxisType  =  AxisType.Primary;
            
this .Chart2.Series[ " 新增学员总数 " ].YValueMembers  =   " allyear " ;
            
this .Chart2.Series[ "
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值