控件的公共属性介绍完后,接下来是控件事件的处理,事件处理分为服务器事件和客户端事件处理,对于服务器端事件,除了在内部处理删除和上传的按钮点击事件外,组件还公开一个OnAfterOperation事件,当上传成功时或删除成功是触发该事件,而根据传给事件command名称可以判断是删除还是上传成功.之所以设置此事件,是考虑到今后的开发的filepicker作准备,其界面如下
论Web控件开发 - 完美上传下载控件“新”(三)
当点击图片按钮时如下:
论Web控件开发 - 完美上传下载控件“新”(三)
当该弹出窗口的上传下载组件每次操作成功后均应刷新预览窗口,因此设置此服务器端事件.

以下是具体的服务器端事件代码
  


论Web控件开发 - 完美上传下载控件“新”(三)//处理删除按钮事件
论Web控件开发 - 完美上传下载控件“新”(三)
  private void Delete_Clicked(Object sender, System.Web.UI.ImageClickEventArgs e)
{
论Web控件开发 - 完美上传下载控件“新”(三)   
if(this.FileName!=string.Empty)
{
论Web控件开发 - 完美上传下载控件“新”(三)    System.IO.File.Delete(
this.Page.MapPath(this.FullFileName));
论Web控件开发 - 完美上传下载控件“新”(三)    
this.MessageBox("删除操作成功!");
论Web控件开发 - 完美上传下载控件“新”(三)    
this.FileName = string.Empty;
论Web控件开发 - 完美上传下载控件“新”(三)
//成功时触发事件
论Web控件开发 - 完美上传下载控件“新”(三)
    OnAfterOperation(new CommandEventArgs("Delete",null));
论Web控件开发 - 完美上传下载控件“新”(三)   }

论Web控件开发 - 完美上传下载控件“新”(三)   
论Web控件开发 - 完美上传下载控件“新”(三)  }

论Web控件开发 - 完美上传下载控件“新”(三)
//当操作成功时的弹出信息框
论Web控件开发 - 完美上传下载控件“新”(三)

论Web控件开发 - 完美上传下载控件“新”(三)  
private void MessageBox(string strInfo)
{
论Web控件开发 - 完美上传下载控件“新”(三)   strInfo
="<script>alert('"+strInfo+"')</script>";
论Web控件开发 - 完美上传下载控件“新”(三)   
if(this.Page != null)
论Web控件开发 - 完美上传下载控件“新”(三)    
this.Page.RegisterStartupScript(System.Guid.NewGuid().ToString(),strInfo);
论Web控件开发 - 完美上传下载控件“新”(三)  }

论Web控件开发 - 完美上传下载控件“新”(三)
//初始化时将扩展名均化为小写字符便于今后验证
论Web控件开发 - 完美上传下载控件“新”(三)
  protected override void OnInit(EventArgs e)
{
论Web控件开发 - 完美上传下载控件“新”(三)   
base.OnInit (e);
论Web控件开发 - 完美上传下载控件“新”(三)   
foreach(StringItem item in this.ExtFilters)
{
论Web控件开发 - 完美上传下载控件“新”(三)    item.Text 
= item.Text.ToLower();
论Web控件开发 - 完美上传下载控件“新”(三)   }

论Web控件开发 - 完美上传下载控件“新”(三)  }

论Web控件开发 - 完美上传下载控件“新”(三)
论Web控件开发 - 完美上传下载控件“新”(三)
//上传按钮事件
论Web控件开发 - 完美上传下载控件“新”(三)
  private void Upload_Clicked(Object sender, System.Web.UI.ImageClickEventArgs e)

论Web控件开发 - 完美上传下载控件“新”(三)   System.Web.HttpPostedFile file 
= this.FileUpload.PostedFile;
论Web控件开发 - 完美上传下载控件“新”(三)   
string ExtName = file.FileName.Substring(file.FileName.LastIndexOf("."+ 1);
论Web控件开发 - 完美上传下载控件“新”(三)   
论Web控件开发 - 完美上传下载控件“新”(三)   
if(file.ContentLength > 0)
{
论Web控件开发 - 完美上传下载控件“新”(三)
//服务器端文件类型验证
论Web控件开发 - 完美上传下载控件“新”(三)
    StringItem item = new StringItem();
论Web控件开发 - 完美上传下载控件“新”(三)    item.Text 
= ExtName.ToLower();
论Web控件开发 - 完美上传下载控件“新”(三)    
if((this.ExtFilters.Count > 0)&&(!this.ExtFilters.Contains(item)))
{
论Web控件开发 - 完美上传下载控件“新”(三)     
this.MessageBox("文件类型不支持无法上传!");
论Web控件开发 - 完美上传下载控件“新”(三)     
return;
论Web控件开发 - 完美上传下载控件“新”(三)    }

论Web控件开发 - 完美上传下载控件“新”(三)    
switch(this.UploadFileNameType)
{
论Web控件开发 - 完美上传下载控件“新”(三)     
case FileNameType.AutoGenerate:
论Web控件开发 - 完美上传下载控件“新”(三)
//此时用guid的唯一性自动生成文件名
论Web控件开发 - 完美上传下载控件“新”(三)
      this.FileName = System.Guid.NewGuid().ToString() + "." + ExtName;
论Web控件开发 - 完美上传下载控件“新”(三)      
break;
论Web控件开发 - 完美上传下载控件“新”(三)     
case FileNameType.ClientSide:
论Web控件开发 - 完美上传下载控件“新”(三)
//获取客户端文件名
论Web控件开发 - 完美上传下载控件“新”(三)
      this.FileName = file.FileName.Substring(file.FileName.LastIndexOf("\\")+1);
论Web控件开发 - 完美上传下载控件“新”(三)      
break;
论Web控件开发 - 完美上传下载控件“新”(三)    }

论Web控件开发 - 完美上传下载控件“新”(三)    
if(this.FileName!=string.Empty)
{
论Web控件开发 - 完美上传下载控件“新”(三)     file.SaveAs(
this.Page.MapPath(this.FullFileName));
论Web控件开发 - 完美上传下载控件“新”(三)     
this.MessageBox("上传操作成功!");
论Web控件开发 - 完美上传下载控件“新”(三)
//成功时触发事件
论Web控件开发 - 完美上传下载控件“新”(三)
     OnAfterOperation(new CommandEventArgs("Upload",null));
论Web控件开发 - 完美上传下载控件“新”(三)    }

论Web控件开发 - 完美上传下载控件“新”(三)   }

论Web控件开发 - 完美上传下载控件“新”(三)  }

论Web控件开发 - 完美上传下载控件“新”(三)
//事件键
论Web控件开发 - 完美上传下载控件“新”(三)
  private static readonly object EventOP = new object();
论Web控件开发 - 完美上传下载控件“新”(三)  
public event CommandEventHandler  AfterOperation
{


论Web控件开发 - 完美上传下载控件“新”(三)  }

论Web控件开发 - 完美上传下载控件“新”(三)  
protected virtual void OnAfterOperation( CommandEventArgs e)
{
论Web控件开发 - 完美上传下载控件“新”(三)   CommandEventHandler OpHandler 
= (CommandEventHandler)Events[EventOP];
论Web控件开发 - 完美上传下载控件“新”(三)   
if( OpHandler != null)
{
论Web控件开发 - 完美上传下载控件“新”(三)    OpHandler(
this,e);
论Web控件开发 - 完美上传下载控件“新”(三)   }

论Web控件开发 - 完美上传下载控件“新”(三)  }

论Web控件开发 - 完美上传下载控件“新”(三)  
#endregion
论Web控件开发 - 完美上传下载控件“新”(三)




相关文章:

  • 2022-01-17
  • 2021-07-04
  • 2021-03-31
  • 2022-01-15
  • 2021-09-04
  • 2021-10-28
  • 2022-12-23
猜你喜欢
  • 2021-09-28
  • 2021-10-19
  • 2021-11-06
  • 2021-07-11
  • 2022-12-23
  • 2021-07-25
  • 2021-10-29
相关资源
相似解决方案