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);  
  }

RenderContents和Render区别相关推荐

  1. 浅谈ASP.NET中render方法

    2011-06-08 11:36 runyl 博客园 我要评论(1) 字号:T | T Control.Render 方法是将服务器控件内容发送到提供的HtmlTextWriter 对象,此对象编写将 ...

  2. 控件的呈现方法(Rendering)的内核

    Asp.net中所有的控件都是从System.Web.UI.Control类,在control类中定义了三个与呈现有关的方法,分别是Render方法,RenderChildren方法和RenderCo ...

  3. Express4.x api 翻译(draft)

    用了一年多的Express了,其实会用的功能也能基本满足业务的需求,但是总是感觉自己对其的掌握还是缺少一种系统性.故翻译其api,以期自己在翻译过程中对其有更深的认识. API 原文地址 翻译的内容还 ...

  4. Qt 之 Painter

    文章目录 QPainter "用完后记得销毁" Simple Code 什么时候销毁 使用智能指针 采取哪种方式 update( ) 和 render( )区别 update() ...

  5. 【Vue学习】基础语法(六)

    十二. Vue CLI (脚手架) 1. Vue CLI的介绍和安装 1.1 介绍 方便我们快速搭建Vue开发环境及对应的webpack配置 使用前提: Node,Webpack 安装NodeJS,W ...

  6. Rendering in Rails

    Ruby rails页面跳转代码如下:1.render(:text => string) 2.render(:inline => string, [:type => "rh ...

  7. MADDPG-学习笔记(1)

    文献链接:https://arxiv.org/abs/1706.02275 "Multi-Agent Actor-Critic for Mixed Cooperative-Competiti ...

  8. Render RenderContents RenderControl 三个方法的区别

    每个页面都有一个控件树,代表本页面所拥有的所有子控件,页面控件就是控件树的根,为了生成控件树,页面将建立一个HtmlTextWriter类的实例,在这个实例中封装了相应流,接着页面会把HtmlText ...

  9. 转:Render RenderContents RenderControl 三个方法的区别

    每个页面都有一个控件树,代表本页面所拥有的所有子控件,页面控件就是控件树的根,为了生成控件树,页面将建立一个HtmlTextWriter类的实例,在这个实例中封装了相应流,接着页面会把HtmlText ...

最新文章

  1. 一个可提供html5制作服务的网站
  2. 学习笔记:Model Diagnostics-模型诊断(线性回归)
  3. 安装Linux时,引导分区位于一个GPT分区方案的错误提示
  4. 事件绑定机制简单实现
  5. 计算机教学辅助在教学中的应用研究,云计算辅助教学在高职计算机教学中的应用研究.doc...
  6. NSMethodSignature和NSInvocation的用法
  7. HTML5获取autofocus 属性:输入文字点定位到该位置
  8. google圣诞节彩蛋
  9. 核心指导网络由任务编码器_指导新编码员的最佳做法
  10. 什么样的合作方式最舒服
  11. HTK的Network把所有的NetNode对象chain,并重新排序
  12. 超级好用论文写作工具NoteExpress下载和安装
  13. 【剖析 | SOFARPC 框架】系列之 SOFARPC 序列化比较
  14. 百度网盘撸用户羊毛是怎么一回事
  15. MYSQL 获取当前日期及日期格式,和常用时间转换函数
  16. 超短线炒黄金技巧你掌握到位了吗
  17. 文储研习社第20期 | 关于对区块链培训的一些思考
  18. 什么是 DDoS 攻击?- DDoS 含义
  19. 基于因果推断的根因分析
  20. go语言里读写json

热门文章

  1. mobaxterm在线实时查看日志-命令
  2. php ses 发送邮件,Amazon SES – 通过PHP sdk发送HTML邮件
  3. ABAP 设置ALV复选框
  4. 微信PC电脑桌面端多账号登录微信多开方法
  5. platform详解
  6. QT-通用的软件界面框架,好看且实用
  7. 动态规划(DP)算法介绍
  8. ArcGIS 10 Desktop完全破解方法
  9. ROS中的imu_transformer包是什么,在哪里可以下载啊
  10. IntelliJ IDEA的下载安装与破解