当前位置:主页   - 电脑 - 网站开发 - ASP.Net
dotNetCharting使用总结
来源:网络   作者:   更新时间:2012-03-13
收藏此页】    【字号    】    【打印】    【关闭

  最近作一个项目其中的财务统计部分需要作相关的统计分析,以前见过同事用Siverlight做过一个统计图很绚,可是用户在是用的时候需要首先安装siverlight插件,感觉不爽,另外自己也想尝试一下独立完成该功能,有了这个想法于是想着去自己写统计图控件 ,可没几天老大就阻止了,他说这样做不值得.有专门的公司做这样的控件 ,我们如果把精力花在做控件上会影响项目的进度,想想也对,毕竟术业有专攻。于是在网上找了很多资料看看,发现dotnetCharting是目前公认比较好的统计图控件。使用方法:

  在网上找到最新的dotNetcharting,现在我发现的最新的有5.0,正式版的用的时候灵活性不高很多东西改不了,比如生成后的图片会带控件的原创地址链接等信息,不过没关系网上高手很多,找个破解版的dll。

  下载完成后就可以使用了,两种方法:1 将下载的dll在工具箱中添加,以后就可以拖着用了。2。在你需要的项目中添加dll使用的时候用代码去添加,我采取的方式是二者结合,将控件添加到工具箱用的时候拖进来 ,用代码动态改变它的属性和数据源。

  网上有一个彭建军写的一个饼图,曲线图,柱状图的类,个人感觉这是一个基本操作类,就实际应用而言需要根据实际情况修改,加入相应的实体类,对结构也需要做进一步的修改,这样在开发的时候会大大改善代码冗余,同时符合面向对象的要求。另外曲线图部分此类只能实现一个数据源的情况,如果需要画多条线需要添加Series。总的来说建军的这个类对于初学者来说是一个很好的帮助材料可以学会如何使用dotNetcharting 控件。

  他的代码如下,我的代码由于涉及公司机密不能写出来。

using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using dotnetCHARTING;
using System.Drawing;
  
/**//// <summary>
///ShowData 的摘要说明
/// </summary>
public class ShowData
{
  
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;}
}
  
public ShowData()
{
//
// TOD 在此处添加构造函数逻辑
//
}
  
public ShowData(string PhaysicalImagePath,string Title,string XTitle,string YTitle,string SeriesName)
{
_phaysicalimagepath=PhaysicalImagePath;
_title=Title;
_xtitle=XTitle;
_ytitle=YTitle;
_seriesname=SeriesName;
}
  
/**//**//**//// <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;
  
}
  
/**//**//**//// <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 = true;
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.ToDouble(dt.Rows[i][1].ToString());
          
s.Elements.Add(e);
SC.Add(s);
}
return SC;
}
  
/**//**//**//// <summary>
/// 曲线图
/// </summary>
/// <returns></returns>
public void CreateLine(dotnetCHARTING.Chart chart,DataTable dt2)
{
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();
  Series series2 = new Series();
series2.Type = SeriesType.Line;
series2.Name = "08年费用(千元x)";
series2.Data = dt2;
chart.SeriesCollection.Add(series2);
chart.DefaultSeries.DefaultElement.ShowValue = true;
chart.ShadingEffect = true;
chart.Use3D = false;
chart.Series.DefaultElement.ShowValue =true;
  
}
}

其它资源
来源声明

版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明