服务器端事件和客户端事件介绍完后下面介绍控件的生成,

论Web控件开发 - 完美上传下载控件“新”(五)//输出图片按钮之间的空白图片
论Web控件开发 - 完美上传下载控件“新”(五)
  protected virtual void WriteSpace(HtmlTextWriter writer)
{
论Web控件开发 - 完美上传下载控件“新”(五)   writer.AddAttribute(HtmlTextWriterAttribute.Src, DefaultImagePath
+"HSpace2.gif");
论Web控件开发 - 完美上传下载控件“新”(五)   writer.RenderBeginTag(HtmlTextWriterTag.Img);
论Web控件开发 - 完美上传下载控件“新”(五)   writer.RenderEndTag();
论Web控件开发 - 完美上传下载控件“新”(五)  }

论Web控件开发 - 完美上传下载控件“新”(五) 
论Web控件开发 - 完美上传下载控件“新”(五)  
protected override void Render(HtmlTextWriter writer)
{
论Web控件开发 - 完美上传下载控件“新”(五)
//输出具有一行两个cell的表格其中第一个cell放置htmlinputfile,第二个cell放upload/delete/download/inputhidden按钮
论Web控件开发 - 完美上传下载控件“新”(五)

论Web控件开发 - 完美上传下载控件“新”(五)   writer.AddAttribute(HtmlTextWriterAttribute.Cellpadding, 
"0");
论Web控件开发 - 完美上传下载控件“新”(五)   writer.AddAttribute(HtmlTextWriterAttribute.Cellspacing, 
"0");
论Web控件开发 - 完美上传下载控件“新”(五)   
if(this.Width!=Unit.Empty)
论Web控件开发 - 完美上传下载控件“新”(五)    writer.AddAttribute(HtmlTextWriterAttribute.Width, Width.ToString());
论Web控件开发 - 完美上传下载控件“新”(五)   writer.AddAttribute(HtmlTextWriterAttribute.Border, 
"0");
论Web控件开发 - 完美上传下载控件“新”(五)   
//table
论Web控件开发 - 完美上传下载控件“新”(五)
   writer.RenderBeginTag(HtmlTextWriterTag.Table);
论Web控件开发 - 完美上传下载控件“新”(五)   writer.RenderBeginTag(HtmlTextWriterTag.Tr);
论Web控件开发 - 完美上传下载控件“新”(五)   
//cell1
论Web控件开发 - 完美上传下载控件“新”(五)
//使第二cell的按钮充满单元格,由于inputfile的宽度为100%这样通过设置最外层table的width可以精确控制控件的宽度
论Web控件开发 - 完美上传下载控件“新”(五)
   writer.AddAttribute(HtmlTextWriterAttribute.Width, "98%");
论Web控件开发 - 完美上传下载控件“新”(五)   writer.RenderBeginTag(HtmlTextWriterTag.Td);
论Web控件开发 - 完美上传下载控件“新”(五)
//定义inputfile的客户端id
论Web控件开发 - 完美上传下载控件“新”(五)
   this.FileUpload.Attributes.Add("id",this.ClientID+"__file");
论Web控件开发 - 完美上传下载控件“新”(五)   
this.FileUpload.RenderControl(writer);
论Web控件开发 - 完美上传下载控件“新”(五)   writer.RenderEndTag();
论Web控件开发 - 完美上传下载控件“新”(五)   
//cell2,为了使后三个按钮不换行输出nowrap属性
论Web控件开发 - 完美上传下载控件“新”(五)
   writer.AddAttribute(HtmlTextWriterAttribute.Nowrap,"Yes");
论Web控件开发 - 完美上传下载控件“新”(五)   writer.RenderBeginTag(HtmlTextWriterTag.Td);
论Web控件开发 - 完美上传下载控件“新”(五)   
//hiden input file
论Web控件开发 - 完美上传下载控件“新”(五)
   this.TxtFileName.Attributes.Add("id",this.ClientID);
论Web控件开发 - 完美上传下载控件“新”(五)   
this.TxtFileName.RenderControl(writer);
论Web控件开发 - 完美上传下载控件“新”(五)   
//upload btn
论Web控件开发 - 完美上传下载控件“新”(五)
   WriteSpace(writer);
论Web控件开发 - 完美上传下载控件“新”(五)
//绑定upload客户端事件
论Web控件开发 - 完美上传下载控件“新”(五)
   string onClick = this.BtnUpLoad.Attributes["onclick"]==null?string.Empty:this.BtnUpLoad.Attributes["onclick"];
论Web控件开发 - 完美上传下载控件“新”(五)   
this.BtnUpLoad.Attributes["onclick"= string.Format("if(!({0}_obj.CheckUpload())) return false;",this.ClientID) + onClick;
论Web控件开发 - 完美上传下载控件“新”(五)   
this.BtnUpLoad.RenderControl(writer);
论Web控件开发 - 完美上传下载控件“新”(五)
论Web控件开发 - 完美上传下载控件“新”(五)   
//delete btn
论Web控件开发 - 完美上传下载控件“新”(五)
   if(this.AllowDelete) WriteSpace(writer); 
论Web控件开发 - 完美上传下载控件“新”(五)
//绑定delete客户端事件
论Web控件开发 - 完美上传下载控件“新”(五)
   onClick = (this.BtnDelete.Attributes["onclick"]==null)?string.Empty:this.BtnDelete.Attributes["onclick"];
论Web控件开发 - 完美上传下载控件“新”(五)   
this.BtnDelete.Attributes["onclick"= string.Format("if(!({0}_obj.CheckDelete())) return false;",this.ClientID)+ onClick;
论Web控件开发 - 完美上传下载控件“新”(五)   
this.BtnDelete.RenderControl(writer);
论Web控件开发 - 完美上传下载控件“新”(五)
论Web控件开发 - 完美上传下载控件“新”(五)
论Web控件开发 - 完美上传下载控件“新”(五)   
//download btn
论Web控件开发 - 完美上传下载控件“新”(五)
   WriteSpace(writer);
论Web控件开发 - 完美上传下载控件“新”(五)
//绑定download客户端事件
论Web控件开发 - 完美上传下载控件“新”(五)
   this.BtnDownload.Attributes["onclick"]=string.Format("if(!({0}_obj.CheckDownload(this))) return false;",this.ClientID);
论Web控件开发 - 完美上传下载控件“新”(五)   
this.BtnDownload.RenderControl(writer);
论Web控件开发 - 完美上传下载控件“新”(五)   writer.RenderEndTag();
论Web控件开发 - 完美上传下载控件“新”(五)   
论Web控件开发 - 完美上传下载控件“新”(五)   writer.RenderEndTag();
论Web控件开发 - 完美上传下载控件“新”(五)   writer.RenderEndTag();
论Web控件开发 - 完美上传下载控件“新”(五)  }

论Web控件开发 - 完美上传下载控件“新”(五)  
论Web控件开发 - 完美上传下载控件“新”(五)  
protected override void CreateChildControls()
{
论Web控件开发 - 完美上传下载控件“新”(五)   
this.Controls.Clear();
论Web控件开发 - 完美上传下载控件“新”(五)   
//button hidden ctl0首先创建inputhidden因为其它控件会用到些控件.
论Web控件开发 - 完美上传下载控件“新”(五)
   this._txtFileName = new System.Web.UI.HtmlControls.HtmlInputHidden();
论Web控件开发 - 完美上传下载控件“新”(五)   
this.Controls.Add(this._txtFileName);
论Web控件开发 - 完美上传下载控件“新”(五)
论Web控件开发 - 完美上传下载控件“新”(五)   
//file upload ctl1创建上传文件控件
论Web控件开发 - 完美上传下载控件“新”(五)
   this._fileUpload = new System.Web.UI.HtmlControls.HtmlInputFile();
论Web控件开发 - 完美上传下载控件“新”(五)
//充满第一个单元格
论Web控件开发 - 完美上传下载控件“新”(五)
   this._fileUpload.Style.Add("WIDTH","100%");
论Web控件开发 - 完美上传下载控件“新”(五)
//应用样式
论Web控件开发 - 完美上传下载控件“新”(五)
   if(this.CSS!=string.Empty)
论Web控件开发 - 完美上传下载控件“新”(五)    
this._fileUpload.Attributes.Add("class",this.CSS);
论Web控件开发 - 完美上传下载控件“新”(五)   
this.Controls.Add(this._fileUpload);
论Web控件开发 - 完美上传下载控件“新”(五)
论Web控件开发 - 完美上传下载控件“新”(五)   
//button upload上传控件
论Web控件开发 - 完美上传下载控件“新”(五)
   this._btnUpLoad = new ImageButton();
论Web控件开发 - 完美上传下载控件“新”(五)   
this._btnUpLoad.ImageUrl = this.UploadImg;
论Web控件开发 - 完美上传下载控件“新”(五)   
if(this.UploadFileNameType != FileNameType.AutoGenerate)
论Web控件开发 - 完美上传下载控件“新”(五)    
this._btnUpLoad.EnableWarning = true;
论Web控件开发 - 完美上传下载控件“新”(五)   
else
论Web控件开发 - 完美上传下载控件“新”(五)    
this._btnUpLoad.EnableWarning = false;
论Web控件开发 - 完美上传下载控件“新”(五)   
this._btnUpLoad.AlternateText = this.UploadAlt;
论Web控件开发 - 完美上传下载控件“新”(五)   
this._btnUpLoad.WarningMessage = "如果文件已经存在将被覆盖,确定吗?";
论Web控件开发 - 完美上传下载控件“新”(五)   
this._btnUpLoad.CausesValidation = false;
论Web控件开发 - 完美上传下载控件“新”(五)
//绑定上传事件
论Web控件开发 - 完美上传下载控件“新”(五)
   this._btnUpLoad.Click += new ImageClickEventHandler(Upload_Clicked);
论Web控件开发 - 完美上传下载控件“新”(五)   
this.Controls.Add(this._btnUpLoad);
论Web控件开发 - 完美上传下载控件“新”(五)
论Web控件开发 - 完美上传下载控件“新”(五)   
//button delete创建删除按钮
论Web控件开发 - 完美上传下载控件“新”(五)
   this._btnDelete = new ImageButton();
论Web控件开发 - 完美上传下载控件“新”(五)   
this._btnDelete.ImageUrl = this.DeleteImg;
论Web控件开发 - 完美上传下载控件“新”(五)   
this._btnDelete.EnableWarning = true;
论Web控件开发 - 完美上传下载控件“新”(五)   
this._btnDelete.AlternateText = this.DeleteAlt;
论Web控件开发 - 完美上传下载控件“新”(五)   
this._btnDelete.WarningMessage = "确定要删除吗?";
论Web控件开发 - 完美上传下载控件“新”(五)
//不触发验证
论Web控件开发 - 完美上传下载控件“新”(五)
   this._btnDelete.CausesValidation = false;
论Web控件开发 - 完美上传下载控件“新”(五)
//绑定删除事件
论Web控件开发 - 完美上传下载控件“新”(五)
   this._btnDelete.Click +=new ImageClickEventHandler(Delete_Clicked);
论Web控件开发 - 完美上传下载控件“新”(五)   
if(!this.AllowDelete)
论Web控件开发 - 完美上传下载控件“新”(五)    
this._btnDelete.Visible = false;
论Web控件开发 - 完美上传下载控件“新”(五)   
this.Controls.Add(this._btnDelete);
论Web控件开发 - 完美上传下载控件“新”(五)
论Web控件开发 - 完美上传下载控件“新”(五)   
//button download
论Web控件开发 - 完美上传下载控件“新”(五)
   this._btnDownload = new HyperLink();
论Web控件开发 - 完美上传下载控件“新”(五)   
this._btnDownload.Style.Add("cusor","hand");
论Web控件开发 - 完美上传下载控件“新”(五)   
this._btnDownload.ImageUrl = this.DownloadImg;
论Web控件开发 - 完美上传下载控件“新”(五)   
this._btnDownload.ToolTip = this.DownloadAlt;
论Web控件开发 - 完美上传下载控件“新”(五)   
this._btnDownload.NavigateUrl = this.FullFileName;
论Web控件开发 - 完美上传下载控件“新”(五)   
this._btnDownload.Target = "_blank";
论Web控件开发 - 完美上传下载控件“新”(五)   
this._btnDownload.Text = "download";
论Web控件开发 - 完美上传下载控件“新”(五)
论Web控件开发 - 完美上传下载控件“新”(五)   
this.Controls.Add(this._btnDownload);
论Web控件开发 - 完美上传下载控件“新”(五)
论Web控件开发 - 完美上传下载控件“新”(五)
论Web控件开发 - 完美上传下载控件“新”(五)
//子控件创建成功
论Web控件开发 - 完美上传下载控件“新”(五)
   ChildControlsCreated = true;
论Web控件开发 - 完美上传下载控件“新”(五)  }

论Web控件开发 - 完美上传下载控件“新”(五)
论Web控件开发 - 完美上传下载控件“新”(五)
最后是视图状态的相关函数,可以参考我以前的文章在此只是把代码列下
论Web控件开发 - 完美上传下载控件“新”(五)    protected override void LoadViewState(object state)
{
论Web控件开发 - 完美上传下载控件“新”(五)            
if(state !=null)
{
论Web控件开发 - 完美上传下载控件“新”(五)                
object[] savedState = (object[])state;
论Web控件开发 - 完美上传下载控件“新”(五)                
if(savedState[0!= null)
论Web控件开发 - 完美上传下载控件“新”(五)                    
base.LoadViewState(savedState[0]);
论Web控件开发 - 完美上传下载控件“新”(五)                
if(savedState[1!= null)
论Web控件开发 - 完美上传下载控件“新”(五)                    
this.ExtFilters.LoadViewState(savedState[1]);
论Web控件开发 - 完美上传下载控件“新”(五)            }
    
论Web控件开发 - 完美上传下载控件“新”(五)
论Web控件开发 - 完美上传下载控件“新”(五)        }

论Web控件开发 - 完美上传下载控件“新”(五)        
protected override object SaveViewState()
{
论Web控件开发 - 完美上传下载控件“新”(五)            
object[] savedState = new object[2];
论Web控件开发 - 完美上传下载控件“新”(五)            savedState[
0= base.SaveViewState ();
论Web控件开发 - 完美上传下载控件“新”(五)            savedState[
1= this.ExtFilters.SaveViewState();
论Web控件开发 - 完美上传下载控件“新”(五)        
论Web控件开发 - 完美上传下载控件“新”(五)            
for(int i=0;i<savedState.Length;i++)
{
论Web控件开发 - 完美上传下载控件“新”(五)                
if(savedState[i] != null)
论Web控件开发 - 完美上传下载控件“新”(五)                    
return savedState;
论Web控件开发 - 完美上传下载控件“新”(五)            }

论Web控件开发 - 完美上传下载控件“新”(五)            
return null;
论Web控件开发 - 完美上传下载控件“新”(五)        }

论Web控件开发 - 完美上传下载控件“新”(五)        
protected override void TrackViewState()
{
论Web控件开发 - 完美上传下载控件“新”(五)            
base.TrackViewState();
论Web控件开发 - 完美上传下载控件“新”(五)            
this.ExtFilters.TrackViewState();
论Web控件开发 - 完美上传下载控件“新”(五)        }


相关文章:

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