📄 uploadprogressbar.cs
字号:
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 + -