⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uploadprogressbar.cs

📁 上传的控件
💻 CS
📖 第 1 页 / 共 2 页
字号:
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using WUSGControl.Web.Upload;
using System.Web.UI.HtmlControls;

using WUSGControl.Web.UI.WebControls;

namespace WUSGControl.Web.UI.WebControls
{    

    /// <summary>
    /// 进度条控件, 显示进度,并可以取消上传
    /// 可以指定上传文件保存位置,如数据库或文件夹
    /// </summary>
    [Designer(typeof(ProgressBarDesigner))]
    [ToolboxData("<{0}:UploadFileControl runat=server></{0}:UploadFileControl>")]
    public class UploadFileControl:WebControl,ICallbackEventHandler,INamingContainer
    {

        private Button _btnUpload;
        //private System.Web.UI.HtmlControls.HtmlButton _btnUpload;
        //用昌泡法来处理事件
        private static readonly object EventButtonClick = new object();

        private string GUID;

        [Bindable(true)]
        [Category("行为")]
        [DefaultValue(true)]
        [Localizable(true)]
        [Description("上传文件是否保存到文件夹,true保存到指定的文件夹,false则保存到数据库,此时要实现指定的数据库结口")]
        public bool IsSaveFolder
        {
            get
            {
                string s = (string)ViewState["IsSaveFolder"];
                return ((s == null||s==string.Empty)?true:Convert.ToBoolean(s));
            }

            set
            {
                ViewState["IsSaveFolder"] = value.ToString();
            }
        }

        [Bindable(true)]
        [Category("行为")]
        [DefaultValue("\\wusg")]
        [Localizable(true)]
        [Description("客户端接收上传成功后的方法名字")]
        public string SuccessFunc
        {
            get
            {
                string s = (string)ViewState["SuccessFunc"];
                return ((s == null || s == string.Empty) ? "null" : s);
            }

            set
            {
                ViewState["SuccessFunc"] = value;
            }
        }

        [Bindable(true)]
        [Category("行为")]
        [DefaultValue("\\wusg")]
        [Localizable(true)]
        [Description("上传文件的文件夹,位置为当前web下的目录,格式为 wusg, 则文件为上传到该指定的文件夹下")]
        public string UploadFolder
        {
            get
            {
                string s = (string)ViewState["UploadFolder"];
                return ((s == null||s==string.Empty) ? "wusg" : s);
            }

            set
            {
                ViewState["UploadFolder"] = value;
            }
        }

        [Bindable(true)]
        [Category("行为")]
        [DefaultValue(3)]
        [Localizable(true)]
        [Description("可以一次上传文件的最大数量.")]
        public int UploadFileCount
        {
            get
            {
                string s = (string)ViewState["UploadFileCount"];
                return ((s ==null||s == string.Empty)? 3:Convert.ToInt32(s));
            }

            set
            {
                ViewState["UploadFileCount"] = value.ToString();
            }
        }

        [Bindable(true)]
        [Category("外观")]
        [DefaultValue("BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; FONT-SIZE: 9pt; OVERFLOW: hidden; BORDER-LEFT: #000000 1px solid; WIDTH: 396px; BORDER-BOTTOM: #000000 1px solid; position:absolute; HEIGHT: 18px; TEXT-ALIGN: center")]
        [Localizable(true)]
        [Description("提示文本的样式")]
        public string ProgressTextInfoCssStyle
        {
            get
            {
                String s = (String)ViewState["ProgressTextInfoCssStyle"];
                return ((s == null) ? "BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; FONT-SIZE: 9pt; OVERFLOW: hidden; BORDER-LEFT: #000000 1px solid; WIDTH: 396px; BORDER-BOTTOM: #000000 1px solid; position:absolute; HEIGHT: 18px; TEXT-ALIGN: center" : s);
            }

            set
            {
                ViewState["ProgressTextInfoCssStyle"] = value;
            }
        }

        [Bindable(true)]
        [Category("外观")]
        [DefaultValue("float:left;OVERFLOW: hidden; WIDTH: 0%; HEIGHT: 22px; BACKGROUND-COLOR: #5fff3f;")]
        [Localizable(true)]
        [Description("进度条进度样式")]
        public string ProgressValueCssStyle
        {
            get
            {
                String s = (String)ViewState["ProgressValueCssStyle"];
                return ((s == null) ? "float:left;OVERFLOW: hidden; WIDTH: 0%; HEIGHT: 21px; BACKGROUND-COLOR: #5fff3f;" : s);
            }

            set
            {
                ViewState["ProgressValueCssStyle"] = value;
            }
        }

        [Bindable(true)]
        [Category("Appearance")]
        [DefaultValue("WIDTH: 398px; HEIGHT: 22px")]
        [Localizable(true)]
        public string ProgressBarCssStyle
        {
            get
            {
                String s = (String)ViewState["ProgressBarCssStyle"];
                return ((s == null) ? "WIDTH: 398px; HEIGHT: 22px" : s);
            }

            set
            {
                ViewState["ProgressBarCssStyle"] = value;
            }
        }

        [Bindable(true)]
        [Category("Behavior")]
        [DefaultValue("")]
        public string UploadButtonName
        {
            get
            {
                String s = (String)ViewState["UploadButtonName"];
                return ((s == null) ? string.Empty : s);
            }

            set
            {
                ViewState["UploadButtonName"] = value;
            }
        }

        ///// <summary>
        ///// 实现接口
        ///// </summary>
        //public bool RaisesItemChangedEvents
        //{
        //    get { return true; }
        //}

        #region 控件呈现
        /// <summary>
        /// 重写控件集合
        /// </summary>
        public override ControlCollection Controls
        {
            get
            {
                this.EnsureChildControls();
                return base.Controls;
            }
        }

        protected override void CreateChildControls()
        {
            this.Controls.Clear();
            _btnUpload = new Button();            
            //执行上传事件时,启动上传并启动上传进度条.
            _btnUpload.Click += new EventHandler(this.UploadEvent);//包含法事件处理
            //_btnUpload.CommandName = "ButtonClick";//昌泡法事件处理 重写OnBubbleEvent方法
            _btnUpload.Text = this.UploadButtonName;
            _btnUpload.ID = "btnUpload";
            //_btnUpload.Attributes.AddAttributes(
            //this.UploadButtonName = _btnUpload.UniqueID;
            this.Controls.Add(_btnUpload);
        }

        protected override void OnPreRender(EventArgs e)
        {
            #region 注册客户端需所脚本
            string script = string.Concat(
              "<script language=\"javascript\" type=\"text/javascript\"> var iTimerID = null;\r\n",
                //进度条开始
            "    function ProcessStar() \r\n",
            "    {\r\n",
            "        try\r\n",
            "        {\r\n",
            "            //服务器端方法注册\r\n",
            "     "+      Page.ClientScript.GetCallbackEventReference(this,"", "ReciveResult", null,null,false) +"\r\n",
            "        }\r\n",
            "        catch(e)\r\n",
            "        {\r\n",
            "            alert(e);\r\n",
            "        }\r\n",
            "    }\r\n",
            //堆放完成结果日志 filename=文件真实名字 size=文件尽寸难行nfilename=新文件名字,在文件夹中保存
             "   function PushComplete(filename,size,nfilename)\r\n",
            "    {\r\n",
            "        var file = new Object(); file.oname=filename; file.size=size; file.newname=nfilename; allCompleteInfo.push(file);  \r\n",//成功后用到的参数对象的格式

            "    }\r\n",
                //处理显示日志到页面
             "   function DisComplete()\r\n",
            "    {\r\n",
              "            var firstChild = $('tdUploadLog').firstChild;\r\n",
            "              while(firstChild){firstChild.removeNode(true);firstChild = $('tdUploadLog').firstChild;} \r\n",
            "        for(var i=0; i<allCompleteInfo.length;i++)  \r\n",
            "        { \r\n",
            "             var divbtn = new divBtn('>'+ decodeURIComponent(allCompleteInfo[i].oname)+ '(' +allCompleteInfo[i].size+')',1); \r\n",
            "             divbtn.Frame.style.styleFloat='none';   \r\n",
          
            "              $('tdUploadLog').appendChild(divbtn.Frame); \r\n",
            "              \r\n",
            "        } allCompleteInfo.clear();\r\n",

            "    }\r\n",

           // "    //清空当前的已上传的文件,并写日志到页面,并给成功方法传值,以便下一步的处理\r\n",

            "   function ClearUploadedFile()\r\n",
            "    {\r\n", 
            "        selFrameArea.clearAllSelFrame();  \r\n",
             "       var selbtnlength = fileSelButtonCollection.aryBtns.length; \r\n",
               "      fileSelButtonCollection.RemoveAll();\r\n",//要只有一项
           // "        for(var i=0;i< selbtnlength&&fileSelButtonCollection.aryBtns.length !=1;i++) \r\n",
           // "        {                      \r\n",
           // "             var fileSelButton =  fileSelButtonCollection.aryBtns[i]; \r\n",
           //// "             fileSelButtonCollection.aryBtns[i]  ;  \r\n",
           // "             fileSelButtonCollection.Remove(fileSelButtonCollection.aryBtns[i]); \r\n",//if(fileSelButton.fileInput.value !='') i--;
           ////"             var a = allSelFile;  allSelFile = new Array(); \r\n",
           // "                              \r\n",
           // "        }                      \r\n",
            "         var successfunc = eval('" + SuccessFunc + "'); if(typeof successfunc != 'undefined'&&typeof successfunc=='function'){ successfunc(allCompleteInfo);}\r\n",
            
            "    }\r\n",
            "   function ReciveResult(Result,Context)\r\n",
            "    {\r\n",
            "        try\r\n",
            "        {   \r\n",         
            "            iTimerID = window.setTimeout(\"ProcessStar()\",1000);\r\n",
            "            eval(Result);\r\n",
            "        }\r\n",
            "        catch(e)\r\n",
            "        {\r\n",
            "            alert(e);\r\n",
            "        }\r\n",

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -