第一章 .Net 控件开发(WebForm) 开发简单自定义控件(4) Style类以及WebControl类
来源:互联网 发布:博远软件下载 编辑:程序博客网 时间:2024/06/05 12:35
2、我们首先对上章TestControl1类的Render方法进行修改,我们在设计时没用的CSS样式,我们先给表格增加个样式高度。由于TestControl1继承TestControl,我们就直接在TestControl类的Render方法进行修改,而不在TestControl1方法进行重写了。
/// <summary> /// 将服务器控件内容发送到提供的 System.Web.UI.HtmlTextWriter 对象,此对象编写将在客户端呈现的内容 /// </summary> /// <param name="writer">接收服务器控件内容的 System.Web.UI.HtmlTextWriter 对象</param> protected override void Render(HtmlTextWriter writer) { writer.AddStyleAttribute(HtmlTextWriterStyle.Height, "50px"); //第2章(4)节增加的一个样式属性 writer.AddAttribute(HtmlTextWriterAttribute.Border, "1"); writer.AddAttribute(HtmlTextWriterAttribute.Cellpadding, "2"); writer.AddAttribute(HtmlTextWriterAttribute.Cellspacing, "3"); writer.RenderBeginTag(HtmlTextWriterTag.Table); writer.RenderBeginTag(HtmlTextWriterTag.Tr); writer.RenderBeginTag(HtmlTextWriterTag.Td); writer.Write(Name); writer.RenderEndTag(); writer.RenderBeginTag(HtmlTextWriterTag.Td); writer.AddAttribute(HtmlTextWriterAttribute.Id, "Txt_Name"); writer.AddAttribute(HtmlTextWriterAttribute.Type, "text"); writer.AddAttribute(HtmlTextWriterAttribute.Name, "Txt_Name"); writer.RenderBeginTag(HtmlTextWriterTag.Input); writer.RenderEndTag(); writer.RenderEndTag(); writer.RenderEndTag(); writer.RenderBeginTag(HtmlTextWriterTag.Tr); writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2"); writer.AddAttribute(HtmlTextWriterAttribute.Align, "center"); writer.RenderBeginTag(HtmlTextWriterTag.Td); writer.AddAttribute(HtmlTextWriterAttribute.Id, "Txt_Show"); writer.AddAttribute(HtmlTextWriterAttribute.Type, "submit"); writer.AddAttribute(HtmlTextWriterAttribute.Value, ShowName); writer.AddAttribute(HtmlTextWriterAttribute.Name, "Txt_Show"); writer.RenderBeginTag(HtmlTextWriterTag.Input); writer.RenderEndTag(); writer.RenderEndTag(); writer.RenderEndTag(); writer.RenderEndTag(); base.Render(writer); }
3、HtmlTextWriter.AddStyleAttribute的方法的第二个参数是个字符串,当然有时候两个参数都可以以字符串的形式。该字符串的值麻烦的是,它不是安全类型很容易出错,比如我们设置表格宽度时,有时候一小心,将样式设置成writer.AddStyleAttribute(HtmlTextWriterStyle.Height, "50p");少了个“x”也都有可能的。但我们不用担心Style类提供了解决的方法,比如BackColor的值就是要Color类型,这样我们就不容易出错了,即使出错VS也会有提示。可是Style并不支持所有的CSS属性,有些属性我们找不到,这时我们就要进行扩展,我们后面的章节会讲到。
4、我们先看下上章控件所生成的HTML源码,我们从图中可以看到包含3个模块,每个模块都有不同的HTML标记,这不是很好的设计方法,因为方法必须被具体地涉及用于实现单一的功能,比如方法完成的人物太多,每次修改已点代码,那么最终将会失败,原因是每件事都很复杂。比如开发人员要在最外层的HTML元素table增加了新的属性,开发人员只能重写Render方法,包括与新属性完全无关的部分,又比如要在最外层元素HTML元素table打开和关闭之间嵌套呢!这可以使用WebContol类了。
5、WebControl采用完全不同的方法,WebControl将呈现3个HTML块的任务委托给独立的方法,而不是像我们前面缩写的都写在Render方法里。WebControl类重写了Render方法,将3个3个HTML块的任务委托给独立的方法。
protected internal override void Render(HtmlTextWriter writer) { RenderBeginTag(writer); RenderContents(writer); RenderEndTag(writer); }
代码下载地址:点击下载
本博客内容有些来源于网络或书籍如果侵害到你的权益,请及时联系我(hch458458@vip.qq.com)
版权归nethch所有,转载请注明出处!
- 第一章 .Net 控件开发(WebForm) 开发简单自定义控件(4) Style类以及WebControl类
- 第一章 .Net 控件开发(WebForm) 开发简单自定义控件(5) 继承WebControl类
- 第一章 .Net 控件开发(WebForm) 开发简单自定义控件(6) 自定义Style类
- 第一章 .Net 控件开发(WebForm) 开发简单自定义控件(7) 控件事件的引发以及优化
- 第一章 .Net 控件开发(WebForm) 开发简单自定义控件
- 第一章 .Net 控件开发(WebForm) 开发简单自定义控件(1) 自定义控件初始
- 第一章 .Net 控件开发(WebForm) 开发简单自定义控件(2) 控件属性的申明
- 第一章 .Net 控件开发(WebForm) 开发简单自定义控件(3) HtmlTextWriter的相关枚举以及状态管理
- 第一章 .Net 控件开发(WebForm) 开发简单自定义控件(8) 页面的回传
- 第一章 .Net 控件开发(WebForm) 开发简单自定义控件(9) 流程和生命周期
- 第一章 .Net 控件开发(WebForm) 开发简单自定义控件(8) 页面的回传
- 第二章 .Net 控件开发(WebForm) 开发自定义复合控件(1) 继承ComPositeControl类以及子控件
- ASP.NET自定义控件组件开发 第二章 继承WebControl的自定义控件
- ASP.NET自定义控件组件开发 第二章 继承WebControl的自定义控件
- ASP.NET自定义控件组件开发 第一章:从一个简单的控件谈起
- 第二章 .Net 控件开发(WebForm) 开发自定义复合控件(2) 重写属性和方法
- 第二章 .Net 控件开发(WebForm) 开发自定义复合控件(3) 事件冒泡
- .Net 控件开发(WebForm) 前言 目录
- 第一章 .Net 控件开发(WebForm) 开发简单自定义控件(3) HtmlTextWriter的相关枚举以及状态管理
- 赢得职场好人缘的赞美法则
- iphone开发官网例子
- 【编程语言】C++----常量指针与指针常量的区别
- Android 中支持的几种传感器
- 第一章 .Net 控件开发(WebForm) 开发简单自定义控件(4) Style类以及WebControl类
- Win XP迎十周岁生日 安全研究员呼吁将其卸载
- 使用ajax刷新jfreechart,jfreechart生成图片不变
- 对SQL2005 在默认的设置中是删除了 XP_CMDSHELL的一点解决办法
- 关于数据挖掘语言的概述
- mysql 常用命令
- eclipse常用快捷键
- 用GDB调试程序
- 在Ubuntu上为Android系统的Application Frameworks层增加硬件访问服务