使用DotNetCharting控件生成报表统计图总结

步骤:

(1)首先下载dotnetcharting破解版本

(2)把\bin\dotnetCHARTING.dll添加到工具箱,并且添加引用;

(3)把控件拖到你的网页上,然后添加引用using dotnetCHARTING;

(4)创建dotnetCHARTING操作类,以便在程序中调用

 

  /// <summary>    
    /// 根据数据动态生成图形(柱形图、饼图、曲线图)
    /// </summary>
    public class ShowData
    {

        #region 属性
        private string _phaysicalimagepath;//图片存放路径
        private string _title; //图片标题
        private string _xtitle;//图片x座标名称
        private string _ytitle;//图片y座标名称
        private string _seriesname;//图例名称
        private int _picwidth;//图片宽度
        private int _pichight;//图片高度
        private DataTable _dt;//图片数据源

        /// <summary>
        /// 图片存放路径
        /// </summary>
        public string PhaysicalImagePath
        {
            set { _phaysicalimagepath = value; }
            get { return _phaysicalimagepath; }
        }
       
        /// <summary>
        /// 图片标题
        /// </summary>
        public string Title
        {
            set { _title = value; }
            get { return _title; }
        }
       
        /// <summary>
        /// 图片标题
        /// </summary>
        public string XTitle
        {
            set { _xtitle = value; }
            get { return _xtitle; }
        }
     
        /// <summary>
        /// 图片标题
        /// </summary>
        public string YTitle
        {
            set { _ytitle = value; }
            get { return _ytitle; }
        }
  
        /// <summary>
        /// 图例名称
        /// </summary>
        public string SeriesName
        {
            set { _seriesname = value; }
            get { return _seriesname; }
        }
       
        /// <summary>
        /// 图片宽度
        /// </summary>
        public int PicWidth
        {
            set { _picwidth = value; }
            get { return _picwidth; }
        }
      
        /// <summary>
        /// 图片高度
        /// </summary>
        public int PicHight
        {
            set { _pichight = value; }
            get { return _pichight; }
        }
        
        /// <summary>
        /// 图片数据源
        /// </summary>
        public DataTable DataSource
        {
            set { _dt = value; }
            get { return _dt; }
        }
        #endregion

        #region 构造函数
        public ShowData()
        {
            //
            // TODO: 在此处添加构造函数逻辑
            //
        }

        public ShowData(string PhaysicalImagePath, string Title, string XTitle, string YTitle, string SeriesName)
        {
            _phaysicalimagepath = PhaysicalImagePath;
            _title = Title;
            _xtitle = XTitle;
            _ytitle = YTitle;
            _seriesname = SeriesName;
        }
        #endregion

        #region 输出柱形图
        /**/
        /// <summary>
        /// 柱形图
        /// </summary>
        /// <returns></returns>
        public void CreateColumn(dotnetCHARTING.Chart chart)
        {
            chart.Title = this._title;
            chart.XAxis.Label.Text = this._xtitle;
            chart.YAxis.Label.Text = this._ytitle;
            chart.TempDirectory = this._phaysicalimagepath;
            chart.Width = this._picwidth;
            chart.Height = this._pichight;
            chart.Type = ChartType.Combo;
            chart.Series.Type = SeriesType.Cylinder;
            chart.Series.Name = this._seriesname;
            chart.Series.Data = this._dt;
            chart.SeriesCollection.Add();
            chart.DefaultSeries.DefaultElement.ShowValue = true;
            chart.ShadingEffect = true;
            chart.Use3D = false;
            chart.Series.DefaultElement.ShowValue = true;
        }
        #endregion

        #region 输出饼图
        /**/
        /// <summary>
        /// 饼图
        /// </summary>
        /// <returns></returns>
        public void CreatePie(dotnetCHARTING.Chart chart)
        {
            chart.Title = this._title;
            chart.TempDirectory = this._phaysicalimagepath;
            chart.Width = this._picwidth;
            chart.Height = this._pichight;
            chart.Type = ChartType.Pie;
            chart.Series.Type = SeriesType.Cylinder;
            chart.Series.Name = this._seriesname;

            chart.ShadingEffect = true;
            chart.Use3D = false;
            chart.DefaultSeries.DefaultElement.Transparency = 20;
            chart.DefaultSeries.DefaultElement.ShowValue = true;
            chart.PieLabelMode = PieLabelMode.Outside;
            chart.SeriesCollection.Add(getArrayData());
            chart.Series.DefaultElement.ShowValue = true;
        }

        private SeriesCollection getArrayData()
        {
            SeriesCollection SC = new SeriesCollection();
            DataTable dt = this._dt;

            for (int i = 0; i < dt.Rows.Count; i++)
            {
                Series s = new Series();
                s.Name = dt.Rows[i][0].ToString();

                Element e = new Element();

                // 每元素的名称
                e.Name = dt.Rows[i][0].ToString();

                // 每元素的大小数值
                e.YValue = Convert.ToInt32(dt.Rows[i][1].ToString());

                s.Elements.Add(e);
                SC.Add(s);
            }
            return SC;
        }
        #endregion

        #region 输出曲线图
        /// <summary>
        /// 曲线图
        /// </summary>
        /// <returns></returns>
        public void CreateLine(dotnetCHARTING.Chart chart)
        {
            chart.Title = this._title;
            chart.XAxis.Label.Text = this._xtitle;
            chart.YAxis.Label.Text = this._ytitle;
            chart.TempDirectory = this._phaysicalimagepath;
            chart.Width = this._picwidth;
            chart.Height = this._pichight;
            chart.Type = ChartType.Combo;
            chart.Series.Type = SeriesType.Line;
            chart.Series.Name = this._seriesname;
            chart.Series.Data = this._dt;
            chart.SeriesCollection.Add();
            chart.DefaultSeries.DefaultElement.ShowValue = true;
            chart.ShadingEffect = true;
            chart.Use3D = false;
            chart.Series.DefaultElement.ShowValue = true;
        }
        #endregion

    }

 

(4)实例调用

ASPX页面源码:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="TestDemo._Default" %>

<%@ Register Assembly="dotnetCHARTING" Namespace="dotnetCHARTING" TagPrefix="dotnetCHARTING" %>
<!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>
        <dotnetCHARTING:Chart ID="Chart1" runat="server">
        </dotnetCHARTING:Chart>
        <dotnetCHARTING:Chart ID="Chart2" runat="server">
        </dotnetCHARTING:Chart>
        <dotnetCHARTING:Chart ID="Chart3" runat="server">
        </dotnetCHARTING:Chart>
    </div>
    </form>
</body>
</html>

ASPX.CS源码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using dotnetCHARTING;

namespace TestDemo
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            #region 调用说明及范例
            //在要显示统计图的页面代码直接调用,方法类似如下:        
            ShowData show = new ShowData();
            show.Title = "2012年各月消费情况统计";
            show.XTitle = "月份";  
            show.YTitle = "金额(万元)";
            show.PicHight = 300;
            show.PicWidth = 600;
            show.SeriesName = "总金额";
            show.PhaysicalImagePath = "images";
            DataTable dt = new DataTable();
            dt.Columns.Add("month", typeof(string));
            dt.Columns.Add("money", typeof(string));
            dt.Columns["month"].AutoIncrement = true;
            for (int i = 1; i < 13; i++)
            {
                DataRow dr = dt.NewRow();
                dr["month"] = i.ToString();
                dr["money"] = 100 * i;
                dt.Rows.Add(dr);
            }
            show.DataSource = dt;
            show.CreateColumn(this.Chart1);//显示柱形图
            show.CreateLine(this.Chart2);  //显示曲线图
            show.CreatePie(this.Chart3);   //显示饼图
            #endregion
        }
    }
}

运行结果:

posted @ 2012-06-19 09:33  说不清这一切  阅读(3070)  评论(0编辑  收藏  举报