dojo所做的柱状图控件类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Drawing;
using System.Web.UI.WebControls;
using System.Reflection;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.ComponentModel;
using System.Collections;

namespace Common.PageControl
{
   public class DojoxChartingControl
    {
        #region Model
        /// <summary>绑定控件
        /// </summary>
        private PlaceHolder _BindControl;
        /// <summary>隐藏的divId
        /// </summary>
        private string _divId;
        /// <summary>Gird控件ID
        /// </summary>
         /// <summary>隐藏的提示框Id
        /// </summary>
        private string _tid;
          /// <summary>Gird控件ID
        /// </summary>
        private string _gridId;
        /// <summary>Y轴提示词
        /// </summary>
        private string _title;
        /// <summary>x轴值的颜色
        /// </summary>
        private string _xcolor;
        /// <summary>y轴值的颜色
        /// </summary>
        private string _ycolor;
        /// <summary>轴颜色
        /// </summary>
        private string _stroke;
        /// <summary>刻度最大允许值
        /// </summary>
        private double _to;
        /// <summary>刻度间隔
        /// </summary>
        private double _majorTickStep;
        /// <summary>集合
        /// </summary>
        private IList<DojoxCharting> _list;
        /// <summary>第一个DIV宽度
        /// </summary>
        private string _widths;
        /// <summary>默认最小值
        /// </summary>
        private decimal _dey;
        /// <summary>绑定控件
        /// </summary>
        public PlaceHolder BindControl
        {
            get { return _BindControl; }
            set { _BindControl = value; }
        }
        /// <summary>数据集合
        /// </summary>
        public IList<DojoxCharting> List
        {
            get { return _list; }
            set { _list = value; }
        }
        /// <summary>列表宽度
        /// </summary>
        public int Width
        {
            get;
            set;
        }
        /// <summary>列表高度
        /// </summary>
        public int Height
        {
            get;
            set;
        }
        /// <summary>min
        /// </summary>
        public int Min
        {
            get;
            set;
        }
        /// <summary>默认最小值
        /// </summary>
        public decimal Dey
        {
            get { return _dey; }
            set { _dey = value; }
        }
        /// <summary>第一个DIV宽度
        /// </summary>
        public string Widths
        {
            get{return _widths;}
            set{_widths=value;}
        }
        /// <summary>坐标最大值
        /// </summary>
        public double To
        {
            get { return _to; }
            set { _to = value; }
        }
         /// <summary>坐标间隔值
        /// </summary>
        public double MajorTickStep
        {
            get { return _majorTickStep; }
            set { _majorTickStep = value; }
        }
        /// <summary>Y轴提示词
        /// </summary>
        public string Title
        {
            get { return _title; }
            set { _title = value; }
        }
        /// <summary>X轴颜色
        /// </summary>
        public string Xcolor
        {
            get { return _xcolor; }
            set { _xcolor = value; }
        }
        /// <summary>Y轴颜色
        /// </summary>
        public string Ycolor
        {
            get { return _ycolor; }
            set { _ycolor = value; }
        }
        /// <summary>轴值颜色
        /// </summary>
        public string Stroke
        {
            get { return _stroke; }
            set { _stroke = value; }
        }
           /// <summary>Gird控件ID
        /// </summary>
        public string GridId
        {
            get { return _gridId; }
            set { _gridId = value; }
        }
        /// <summary>
        /// </summary>
        public string Tid
        {
            get { return _tid; }
            set { _tid = value; }
        }
         /// <summary>
        /// </summary>
        public string DivId
        {
            get { return _divId; }
            set { _divId = value; }
        }
        #endregion Model

        #region 控件方法
        /// <summary>构造函数
        /// </summary>
        public DojoxChartingControl()
        {
          
        }
        /// <summary>根据传入List数据返回对应数据列List字符串
        /// </summary>
        /// <param name="_t"></param>
        /// <returns></returns>
        private string GetDataList()
        {
            StringBuilder str=new StringBuilder ();//获得Y轴的值
            for (int i = 0; i < List.Count; i++)
   {
       ArrayList arr=new ArrayList ();
                arr.Add(""+List[i].Name+"");
                arr.Add(List[i].Type);
                arr.Add(""+List[i].Color+"");
               str.Append( "animChart.addSeries('"+arr[0]+"',"+arr[1]+", { stroke: { color: '"+arr[2]+"', width: 2 }, fill: '"+arr[2]+"' });");
   }
             return str.ToString();
        }
        /// <summary>创建X轴、Y轴
        /// </summary>
        /// <param name="_t"></param>
        /// <returns></returns>
        private string Getstring(string name,int min,double from,double to,string lables,string stroke,string color)
        {
            string str;
            if (name == "x")
            {
            str = @"animChart.addAxis('" + name + @"', { fixLower: 'major', fixUpper: 'major',
            min: " + min + @",//初始刻度
            from:" + from + @",//刻度
            to: " + to + @",//刻度最大允许值
            labels: [" + lables + @"],
            stroke: '" + stroke + @"',//x轴颜色
            font: 'normal normal bold 8pt Tahoma',//x轴值的大小,字体等
            fontColor: '" + color + @"', //x轴值的颜色
            majorTick: { color: 'black', length: 3 }, //x轴大刻度的颜色、长度
            minorTick: { stroke: 'black', length: 3} //x轴小刻度的颜色、长度
            });";
            }
            else
            {
            str = @"animChart.addAxis('" + name + @"', {vertical: true, fixLower: 'major', fixUpper: 'major',
            min: " + min + @",//初始刻度
            from:10,
            majorTickStep:" 刻度间隔
            to: " + to + @",//刻度最大允许值
            labels: [" + lables + @"],
            title: '" + Title + @"',//Y轴提示词
            titleGap: 10, //Y轴提示词离Y轴的距离
            titleFont: 'normal normal bold 11pt Tahoma', //Y轴提示词的字体、大小等
            titleFontColor: '#545454', //Y轴提示词的颜色
            stroke: '" + stroke + @"',//轴颜色
            font: 'normal normal bold 8pt Tahoma',//轴值的大小,字体等
            fontColor: '" + color + @"', //轴值的颜色
            majorTick: { color: 'black', length: 5 }, //轴大刻度的颜色、长度
            minorTick: { stroke: 'black', length: 3} //轴小刻度的颜色、长度
            });";
            }
            return str;
        }

        /// <summary>数据绑定
        /// </summary>
        public void GridDataBind(Page page,string key)
        {
            //初始变量值
            if (DataProcess.NULL2STR(_gridId) == "")
            {
                _gridId = "DojoGird_" + Guid.NewGuid().ToString();
            }
            if (DataProcess.NULL2STR(_divId) == "")
            {
                _divId = "Div_" + Guid.NewGuid().ToString();
            }
            if (DataProcess.NULL2STR(_tid) == "")
            {
                _tid = "Tid_" + Guid.NewGuid().ToString();
            }
            if (DataProcess.NULL2STR(_xcolor) == "")
            {
                _xcolor = "#545454";
            }
            if (DataProcess.NULL2STR(_ycolor) == "")
            {
                _ycolor = "#545454";
            }
            if (DataProcess.NULL2STR(_stroke) == "")
            {
                _stroke = "green";
            }
            if (DataProcess.NULL2STR(_widths) == "")
            {
                _widths = "";
            }
            StringBuilder ystr = new StringBuilder();
            for (int i = 1; i < 6; i++)//定义Y轴值
            {
                double y1 = MajorTickStep*i;
                ystr.Append( "{ value: " + y1 + ", text: '"+Common.DataProcess.ObjectToMoney(y1)+"'}");
                if (i!=5)
                {
                    ystr.Append(",");
                }
            }
            Label tableStr = new Label();
            tableStr.Text = "<div id=\"" + _gridId + "\" style=\"width:" + Width + "px;height:" + Height + "px;\"> <div id=\"" + _divId + "\"></div></div> <input  type='text' id=\"" + _tid + "\" style=\"position:absolute;visibility:hidden;font-size:12px;  height: 15px;\"/>";
            _BindControl.Controls.Add(tableStr);
            string xstring = Getstring("x",0, 0, 13, @"{ value: 1, text: '1月' }, { value: 2, text: '2月' },//定义轴值
                    { value: 3, text: '3月' }, { value: 4, text: '4月' },
                    { value: 5, text: '5月' }, { value: 6, text: '6月' },
                    { value: 7, text: '7月' }, { value: 8, text: '8月' },
                    { value: 9, text: '9月' }, { value: 10, text: '10月' },
                    { value: 11, text: '11月' }, { value: 12, text: '12月'}", Stroke, Xcolor);
            string ysting = Getstring("y",0, MajorTickStep, To, ystr.ToString(), Stroke, Ycolor);//获得Y轴对象
            string strlist=GetDataList();//获得y值
            decimal sum = Dey + (decimal)0.50;//判断的最低值
            string gridRegisterJs = GetJsStr(_gridId,strlist,xstring,ysting,sum,Widths);
            ScriptManager.RegisterStartupScript(page, page.GetType(), key, gridRegisterJs, false);
        }
      #endregion 控件方法

        #region 构建控件JS
        /// <summary>构建Grid注册JS
        /// </summary>
        /// <param name="gridId"></param>
        /// <param name="dataListStr"></param>
        /// <param name="layoutStr"></param>
        /// <returns></returns>
        private string GetJsStr(string gridId, string str,string Xstring,string Ystring,decimal sum,string width)
        {
            string jsStr = @" <script> dojo.ready(function () {
        var animChart = new dojox.charting.Chart2D('"

            "+str+ @"
         animChart.connectToPlot('default', function(args){//鼠标的onmouseover事件
   switch(args.type){
   case 'onclick':
    break;
   case 'onmouseover':
                   // alert('aaa');
                    var div = document.getElementById('" + Tid+ @"');
                    var index=args.index+1;
                    var yz=args.y.toString();
                    var a=yz.indexOf('.');
                    var sum;
                    if (a>0) {//判断是否小于最低值
                        sum=args.y-" + sum+ @";//得到原值
                        }else{
                        sum=yz;
                    }
                    var len=sum.toString().length;
                   
                    if(len>3&&len<=6){
                      var a=sum.toString().substring(len-3,len);
                      var b=sum.toString().substring(0,len-3);
                      sum=b+','+a;
                    }
                      else if(len>3&&len<=9){
                      var a=sum.toString().substring(len-3,len);
                      var b=sum.toString().substring(len-6,len-3);
                      var c=sum.toString().substring(0,len-6);
                      sum=c+','+b+','+a;
                    }
                      else if(len>3&&len<=12){
                      var a=sum.toString().substring(len-3,len);
                      var b=sum.toString().substring(len-6,len-3);
                      var c=sum.toString().substring(len-9,len-6);
                      var d=sum.toString().substring(0,len-9);
                      sum=d+','+c+','+b+','+a;
                    }
                    div.style.visibility='visible';
     div.value=index+'月,'+sum;//给提示框赋值
                    div.size=div.value.length;
                    var size=div.value.length*10/2;
                    var wth=document.getElementById('divUp').style.width.toString();
                    var wih=wth.substring(0,wth.indexOf('px'));
                    var pd='"+Widths+ @"';
                    var left=0;
                    if(pd==''){
                      left = event.clientX-size;
                    }else{
                      left = event.clientX-size-wih-25;
                    }
//                     var top = event.clientY;
//                     div.style.left = left;
//                     div.style.top = top-30;
//                     div.style.overflowY = 'auto';
                     $('#"
+Tid+@"').css({left:left,top:event.clientY-30});
    break;
   case 'onmouseout':
    document.getElementById('" + ;
    break;
   default:
    //TODO...
    break;
  }
 });
         animChart.render();
         var legendTwo = new dojox.charting.widget.Legend({chart: animChart}, '"
+DivId+@"')
        });
        </script>";
            return jsStr;
        }
             #endregion 构建控件JS
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值