RenderContents和Render区别
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(" "));
//添加上一页按钮
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(" "));
//添加下一页按钮
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(" "));
//添加末页按钮
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(" "));
//添加当前页和总页码
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(" "));
//添加页码
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区别相关推荐
- 浅谈ASP.NET中render方法
2011-06-08 11:36 runyl 博客园 我要评论(1) 字号:T | T Control.Render 方法是将服务器控件内容发送到提供的HtmlTextWriter 对象,此对象编写将 ...
- 控件的呈现方法(Rendering)的内核
Asp.net中所有的控件都是从System.Web.UI.Control类,在control类中定义了三个与呈现有关的方法,分别是Render方法,RenderChildren方法和RenderCo ...
- Express4.x api 翻译(draft)
用了一年多的Express了,其实会用的功能也能基本满足业务的需求,但是总是感觉自己对其的掌握还是缺少一种系统性.故翻译其api,以期自己在翻译过程中对其有更深的认识. API 原文地址 翻译的内容还 ...
- Qt 之 Painter
文章目录 QPainter "用完后记得销毁" Simple Code 什么时候销毁 使用智能指针 采取哪种方式 update( ) 和 render( )区别 update() ...
- 【Vue学习】基础语法(六)
十二. Vue CLI (脚手架) 1. Vue CLI的介绍和安装 1.1 介绍 方便我们快速搭建Vue开发环境及对应的webpack配置 使用前提: Node,Webpack 安装NodeJS,W ...
- Rendering in Rails
Ruby rails页面跳转代码如下:1.render(:text => string) 2.render(:inline => string, [:type => "rh ...
- MADDPG-学习笔记(1)
文献链接:https://arxiv.org/abs/1706.02275 "Multi-Agent Actor-Critic for Mixed Cooperative-Competiti ...
- Render RenderContents RenderControl 三个方法的区别
每个页面都有一个控件树,代表本页面所拥有的所有子控件,页面控件就是控件树的根,为了生成控件树,页面将建立一个HtmlTextWriter类的实例,在这个实例中封装了相应流,接着页面会把HtmlText ...
- 转:Render RenderContents RenderControl 三个方法的区别
每个页面都有一个控件树,代表本页面所拥有的所有子控件,页面控件就是控件树的根,为了生成控件树,页面将建立一个HtmlTextWriter类的实例,在这个实例中封装了相应流,接着页面会把HtmlText ...
最新文章
- 一个可提供html5制作服务的网站
- 学习笔记:Model Diagnostics-模型诊断(线性回归)
- 安装Linux时,引导分区位于一个GPT分区方案的错误提示
- 事件绑定机制简单实现
- 计算机教学辅助在教学中的应用研究,云计算辅助教学在高职计算机教学中的应用研究.doc...
- NSMethodSignature和NSInvocation的用法
- HTML5获取autofocus 属性:输入文字点定位到该位置
- google圣诞节彩蛋
- 核心指导网络由任务编码器_指导新编码员的最佳做法
- 什么样的合作方式最舒服
- HTK的Network把所有的NetNode对象chain,并重新排序
- 超级好用论文写作工具NoteExpress下载和安装
- 【剖析 | SOFARPC 框架】系列之 SOFARPC 序列化比较
- 百度网盘撸用户羊毛是怎么一回事
- MYSQL 获取当前日期及日期格式,和常用时间转换函数
- 超短线炒黄金技巧你掌握到位了吗
- 文储研习社第20期 | 关于对区块链培训的一些思考
- 什么是 DDoS 攻击?- DDoS 含义
- 基于因果推断的根因分析
- go语言里读写json