DotNetCharting用法---画饼状图、柱状图

DotNetCharting是一个非常棒的.NET图表控件,对中文支持非常好,而且操作方便,开发快速,既有for webform 也有for winform的,而且.net1.1和2.0都有支持。它的官方地址是 http://www.dotnetcharting.com/
下面还有破解版本:) http://blog.csdn.net/allisnew/
虽然它的使用已经非常简单了,但是在实际使用过程中还是碰到了几个麻烦,下面就写一下它的简单使用方法:(以for vs2003的webform举例,其他类同)
1.首先要搞定 帮助文档:从官方网站下载解压后把dotnetcharting4.2for1.x目录设置成虚拟目录,.net1.1的环境,然后就可以看帮助示例了。
2.把\bin\ dotnetCHARTING.dll添加到工具箱,并且添加引用
3.把控件拖到你的网页上,然后添加引用 using dotnetCHARTING;就可以用了
4.说下简单的 柱状图的用法(动态获取数据):它有个type属性,设置成Combo就是柱状图;下面是代码:
         private   void  Page_Load( object  sender, System.EventArgs e)
        
{
            
if (!IsPostBack)
            
{
                ConfChart();
            }

        }


        
chart #region chart

        
private DataTable CreateDataTable()
        
{
            DataTable dt 
= new DataTable();
            SqlConnection conn 
= new SqlConnection(ConfigurationSettings.AppSettings["ConString"]);
            SqlDataAdapter adapter 
= new SqlDataAdapter();
            
string selectQuery = @"select newdate,count(PK_ID) as allcount from "
                
+"(select convert(varchar(10),fld_createtime,120) as newdate,* from FEEDBACK_FB_TAB where 1=1";

            
if (this.txt_StartTime.Text != "")
                selectQuery 
+= " and fld_createtime>"+Common.QuotedStr(txt_StartTime.Text+" 00:00:00");
            
if (this.txt_endtime.Text != "")
                selectQuery 
+= " and fld_createtime<"+Common.QuotedStr(txt_endtime.Text+" 23:59:59");

            selectQuery 
+= ") as t1 group by t1.newdate";

            adapter.SelectCommand 
= new SqlCommand(selectQuery, conn);
            adapter.Fill(dt);
            
return dt;
        }


        
private void ConfChart()
        
{
            Chart1.Debug 
= false;
            Chart1.Mentor 
= false;
            Chart1.Title
="客户反馈日统计图";
            
//Chart1.XAxis.Label.Text="日期";
            Chart1.YAxis.Label.Text="反馈次数";
            Chart1.TempDirectory
="temp";
            Chart1.ShadingEffect 
= true;
            Chart1.Use3D 
= true;
            Chart1.Width 
= 600;
            Chart1.Height 
= 350;
            Chart1.Series.Name 
= "客户反馈次数";
            Chart1.Series.Data 
= CreateDataTable();
            Chart1.SeriesCollection.Add();
        }

        
#endregion
5.下面是简单的 饼状图的做法(憋了半天才搞出了这个方法,网上基本没有帮助,它自带的帮助貌似pie全是静态生成数据), 期待各位更好的方法
首先设置type属性为pie,然后下面是动态数据的代码
         private   void  Page_Load( object  sender, System.EventArgs e)
        
{
            
if (!IsPostBack)
            
{
                ConfChart();
            }

        }


        
chart #region chart

        
private DataTable CreateDataTable()
        
{
            DataTable dt 
= new DataTable();
            SqlConnection conn 
= new SqlConnection(ConfigurationSettings.AppSettings["ConString"]);
            SqlDataAdapter adapter 
= new SqlDataAdapter();
            
string selectQuery = @"select fld_channel,count(PK_ID) as channel_count from FEEDBACK_VIEW where 1=1";

            
if (this.txt_StartTime.Text != "")
                selectQuery 
+= " and fld_createtime>"+Common.QuotedStr(txt_StartTime.Text+" 00:00:00");
            
if (this.txt_endtime.Text != "")
                selectQuery 
+= " and fld_createtime<"+Common.QuotedStr(txt_endtime.Text+" 23:59:59");
            selectQuery 
+= " group by fld_channel order by channel_count DESC";
            adapter.SelectCommand 
= new SqlCommand(selectQuery, conn);
            adapter.Fill(dt);
            
return dt;
        }


        
private void ConfChart()
        
{
            Chart1.Debug 
= false;
            
//Chart1.Mentor = false;
            Chart1.Title="频道反馈量统计图";
            
//Chart1.XAxis.Label.Text="日期";
            
//Chart1.YAxis.Label.Text="反馈次数";
            Chart1.TempDirectory="temp";
            Chart1.ShadingEffect 
= true;
            Chart1.Use3D 
= true;
            Chart1.Width 
= 600;
            Chart1.Height 
= 350;
            
//Chart1.Series.Name = "客户反馈次数";
            
//Chart1.Series.Data = CreateDataTable();
            
//Chart1.Series.DataFields = "fld_channel";
            Chart1.SeriesCollection.Add(getData());
        }


        
饼状图 有无简便方法?#region 饼状图 有无简便方法?
        
private SeriesCollection getData()
        
{
            SeriesCollection SC 
= new SeriesCollection();
            DataTable mydt 
= CreateDataTable();
            
for ( int i = 0; i < mydt.Rows.Count; i++ )
            
{
                Series s 
= new Series();
                s.Name 
= mydt.Rows[i]["fld_channel"].ToString();
                Element e 
= new Element();
                e.Name 
= mydt.Rows[i]["fld_channel"].ToString();
                e.ShowValue 
= true;
                e.ToolTip 
= mydt.Rows[i]["fld_channel"].ToString();
                e.YValue 
= Convert.ToInt32(mydt.Rows[i]["channel_count"].ToString());
                s.AddElements(e);
                SC.Add(s);
            }


            
return SC;
        }

        
#endregion
抓张图看看撒:


强烈推荐他的demo地址:

这个是所有的 DEMO 演示  http://www.dotnetcharting.com/demo.aspx

这个是 Online Documentation http://www.dotnetcharting.com/documentation/v4_4/webframe.html 里面会有详细的说明和用法。



转载于:https://www.cnblogs.com/vagerent/archive/2007/06/04/770828.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值