RenderContents和Render区别

来源:互联网 发布:php开源后台 编辑:程序博客网 时间:2024/05/06 02:50

 Render()   方法基本上控制着   WebControl   的整个输出。默认情况下,Render()   方法实际上会依次调用   RenderBeginTag()、RenderContents()   以及   RenderEndTag()。  
  RenderContents   方法以呈现开始和结束标记之间的控件内容。  
   
  CreateChildControls方法和AddAttributesToRender的区别:  
  AddAttributesToRender方法:只是添加客户端HTML   Tag的属性而已,如颜色、单击事件。  
  writer.AddAttribute(HtmlTextWriterAttribute.Onclick,   "alert('Test');");  
  base.AddAttributesToRender(writer);  
  CreateChildControls方法:生成子控件,如一个WebControl里有个属性为Collection,那这个属性就可以用子控件。

 

---------------------------

 

protected   override   void   Render(HtmlTextWriter   output)  
  {  
  CreateChildControls();  
  base.Render(output);  
  }  
   
   
  protected   override   void   CreateChildControls()  
  {  
  Controls.Clear();  
  ClearChildViewState();  
  this.BuildControlHierarchy();  
  }  
   
  private   void   BuildControlHierarchy()  
  {  
  Table   table   =   new   Table();  
  table.BorderStyle   =   BorderStyle.None;  
  table.Width   =   Unit.Parse("620px");  
  table.Height   =   Unit.Parse("25px");  
  TableRow   row   =   new   TableRow();  
  table.Rows.Add(row);  
  TableCell   cellBar   =   new   TableCell();  
  BuildPagerUI(cellBar);  
  row.Controls.Add(cellBar);  
  Controls.Add(table);  
  }  
   
  private   void   BuildPagerUI(TableCell   cell)  
  {  
  bool   isValidPage   =   (PageIndex   >=0   &&   PageIndex   <=   PageCount-1);  
  bool   canMoveBack   =   (PageIndex   >0);  
  bool   canMoveForward   =   (PageIndex   <   PageCount-1);  
  //添加首页按钮  
  LinkButton   first   =   new   LinkButton();  
  first.ID   =   "first";  
  first.Click   +=   new   EventHandler(first_Click);  
  first.Text   =   "首页";  
  first.Enabled   =   isValidPage   &&   canMoveBack;  
  cell.Controls.Add(first);  
   
  cell.Controls.Add(new   LiteralControl("&nbsp;"));  
   
  //添加上一页按钮  
  LinkButton   prev   =   new   LinkButton();  
  prev.ID   =   "Prev";  
  prev.Click   +=   new   EventHandler(prev_Click);  
  prev.Text   =   "上一页";  
  prev.Enabled   =   isValidPage   &&   canMoveBack;  
  cell.Controls.Add(prev);  
   
  cell.Controls.Add(new   LiteralControl("&nbsp;"));  
   
  //添加下一页按钮  
  LinkButton   next   =   new   LinkButton();  
  next.ID   =   "Next";  
  next.Click   +=   new   EventHandler(next_Click);  
  next.Text   =   "下一页";  
  next.Enabled   =   isValidPage   &&   canMoveForward;  
  cell.Controls.Add(next);  
   
  cell.Controls.Add(new   LiteralControl("&nbsp;"));  
   
  //添加末页按钮  
  LinkButton   last   =   new   LinkButton();  
  last.ID   =   "Last";  
  last.Click   +=   new   EventHandler(last_Click);  
  last.Text   =   "末页";  
  last.Enabled   =   isValidPage   &&   canMoveForward;  
  cell.Controls.Add(last);  
   
  cell.Controls.Add(new   LiteralControl("&nbsp;"));  
   
  //添加当前页和总页码  
   
  Label   lbl   =   new   Label();  
  lbl.ID   =   "label";  
  lbl.Text   =   "页次:"   +   (this.PageIndex   +   1).ToString()   +   "/"   +   this.PageCount.ToString()   +   "   页"   +   "     "   +   this.PageSize.ToString()   +   "条记录/页   共"   +   this.TotalCount.ToString()   +   "条记录     跳转到>>";  
  cell.Controls.Add(lbl);  
   
  cell.Controls.Add(new   LiteralControl("&nbsp;"));  
   
  //添加页码  
  DropDownList   pageList   =   new   DropDownList();  
  pageList.ID   =   "PageList";  
  pageList.AutoPostBack   =   true;  
  pageList.SelectedIndexChanged   +=   new   EventHandler(PageList_Click);  
   
  if   (PageCount   <=0   ||   PageIndex   ==   -1)  
  {  
  pageList.Items.Add("No   Pages");  
  pageList.Enabled   =   false;  
  pageList.SelectedIndex   =   0;    
  }  
  else  
  {  
  for(int   i=1;   i<=PageCount;   i++)  
  {  
  ListItem   item   =   new   ListItem(i.ToString(),   (i-1).ToString());  
  pageList.Items.Add(item);  
  }  
  pageList.SelectedIndex   =   PageIndex;  
  }  
  cell.Controls.Add(pageList);  
  }

原创粉丝点击