`
ljzforever
  • 浏览: 117521 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

浅析asp.net的自定义控件

阅读更多
自定义控件分两种:简单控件与组合控件 一.简单控件 1.直接从现有的服务器控件继承,比如:myControl:Button 这样的好处是简单方便,不用自己再额外写属性与事件,坏处是性能不高,因为里面有太多的我们不需要的东西。 2.从Control或WebControl继承 这样子就相当于将控件从头写一遍。比如: public class MyTextBox : System.Web.UI.Control, System.Web.UI.IPostBackDataHandler { public string Text { get { return (string)ViewState["text"]; } set { ViewState["text"] = value; } } public bool LoadPostData(string postDataKey, System.Collections.Specialized.NameValueCollection postCollection) { string oldValue = Text; string newValue = postCollection[this.UniqueID]; if (oldValue == null || oldValue != newValue) { Text = newValue; return true; } return false; } public void RaisePostDataChangedEvent() { } protected override void Render(System.Web.UI.HtmlTextWriter writer) { StringBuilder sb = new StringBuilder(); sb.Append(""); writer.Write(sb.ToString()); } } 在这里,我们需要重写Render方法。它主要负责控件的呈现,因为我们知道,不管哪种控件,到了客户端一律变成Html代码。在这段代码的最上面是它的一个属性,当然,你也可以跟它加上自定义事件。 这个控件实现了IPostBackDataHandler接口,于是就实现了IsPostBack功能。LoadPostData是主事件,由它来验证值是否发生了变化。从Text属性中我们可以访问旧值,从postCollection集合内我们可以访问新值。如果发生了变化,就返回True,否则返回false 由于在这个控件内实现了IsPostBack,在页面输入完成后按下回车键,所做的操作就是回发,而不是重新刷新页面。 二.组合控件 从CompositeControl继承 也是两种思路:直接组合服务器控件或者完成手写 1.直接组合服务器控件 public class MyInput:CompositeControl { private TextBox _textBox; private Label _labal; private Button _button; protected override void CreateChildControls() { _textBox = new TextBox(); _textBox.ID = "my1"; this.Controls.Add(_textBox); _labal = new Label(); _labal.ID = "my2"; this.Controls.Add(_labal); _button = new Button(); _button.ID = "my3"; Controls.Add(_button); _button.Click += new EventHandler(_button_Click); } void _button_Click(object sender, EventArgs e) { _labal.Text = _textBox.Text; } protected override void Render(System.Web.UI.HtmlTextWriter writer) { writer.RenderBeginTag(HtmlTextWriterTag.Table); writer.RenderBeginTag(HtmlTextWriterTag.Tr); writer.RenderBeginTag(HtmlTextWriterTag.Td); _textBox.RenderControl(writer); writer.RenderEndTag(); writer.RenderEndTag(); writer.RenderBeginTag(HtmlTextWriterTag.Tr); writer.RenderBeginTag(HtmlTextWriterTag.Td); _labal.RenderControl(writer); writer.RenderEndTag(); writer.RenderEndTag(); writer.RenderBeginTag(HtmlTextWriterTag.Tr); writer.RenderBeginTag(HtmlTextWriterTag.Td); _button.RenderControl(writer); writer.RenderEndTag(); writer.RenderEndTag(); writer.RenderEndTag(); } } 在CreateChildControls()事件中将服务器控件进行生成与注册,在Render事件中生成Html代码。在这里,是调用控件的RenderControl方法直接生成代码。 2手写。 那就是直接在Render事件把调用服务器自带的RenderControl方法换成自己手写的代码就可以了,同样,需要自己定义属性与方法,事件。
分享到:
评论

相关推荐

    浅析五大ASP.NET数据控件

    ASP.NET 数据控件是开发Web应用程序时用于展示和操作数据的重要工具。在这篇文章中,我们将深入探讨五大ASP.NET数据控件:GridView、DetailsView、FormView、Repeater和DataList,了解它们的特点和应用场景。 首先...

    浅析asp.net页面跳转

    浅析 ASP.NET 页面跳转 ASP.NET 页面跳转是一种常见的Web开发技术,涉及到页面间数据传递的方法。本文将讨论 ASP.NET 页面跳转的五种方法,分别是使用 Querystring 方法、隐藏域、ViewState、Cookie 和 Application...

    ASP.net的验证控件浅析

    在本篇博客中,我们将详细探讨***的两种主要验证控件:数据格式验证控件(RegularExpressionValidator)和自定义验证控件(CustomValidator)。 首先,数据格式验证控件(RegularExpressionValidator)允许开发者...

    asp.net多频道网站开发架构浅析

    3. **用户控件和自定义控件**:为了提高代码复用性,ASP.NET允许开发者创建用户控件和自定义控件。这些控件可以在多个页面或项目中使用,减少重复代码,提高开发效率。 4. **样式表和脚本管理**:对于多频道网站,...

    asp.net的几个经典代码

    1. **GridView使用大全.cs** - GridView是ASP.NET中用于展示数据的控件,它能够方便地绑定到数据源并实现数据的编辑、排序、分页等功能。这个文件可能包含如何配置GridView,自定义列,处理事件,以及如何进行数据...

    【ASP.NET编程知识】浅析GridView中显示时间日期格式的问题.docx

    在ASP.NET编程中,GridView控件是用于展示数据表格的常用组件,特别是在Web应用程序中用于显示和编辑数据。然而,在处理日期和时间数据时,如何正确格式化它们以便用户友好的展示是一个常见的问题。本文将深入浅出地...

    ASP.NET回车提交事件浅析

    为了改变或自定义这一行为,ASP.NET提供了一些方法。一种方法是通过设置form元素的`defaultButton`属性,指定希望响应回车事件的按钮。例如: ```html ``` 这里,`defaultButton`属性的值应设置为目标按钮的ID。...

    ASP.NET 缓存分析和实践浅析提高运行效率

    ASP.NET提供了多种缓存机制,包括页面级输出缓存、片段缓存(用户控件输出缓存)和数据缓存等。 **页面级输出缓存**是最常见的一种缓存方式,它保存的是整个页面的HTML输出。当新的请求到来时,如果页面仍在缓存...

    程序者之路

    GridView是ASP.NET Web Forms中的一种数据绑定控件,用于显示和编辑表格数据。这个文件可能包含了如何配置、定制和操作GridView的各种方法,包括绑定数据源、添加分页、排序、筛选等功能,以及处理事件和自定义模板...

    ASP.NET Web应用程序的安全解决方案浅析

    - 防止SQL注入攻击(SQLIA),通过使用数据库参数对象或自定义方法转换输入参数,使注入的SQL语句无效化。 - 验证用户输入,主要由客户端验证负责,并以服务器端验证作为辅助。 - 使用哈希算法保存密码,如*** ...

    浅析Repeater控件的使用 (原样导出和动态显示/隐藏Repeater中的列)

    在ASP.NET开发中,Repeater控件是一种非常实用的服务器控件,用于呈现数据源中的数据,具有高度自定义的灵活性。本篇文章主要探讨了如何使用Repeater控件进行原样导出数据以及如何动态地显示或隐藏Repeater中的列。 ...

    浅析GridView中显示时间日期格式的问题

    在.NET开发中,GridView控件是ASP.NET网页中常用的数据展示工具,它可以方便地呈现数据库或其他数据源中的数据。在处理包含时间日期字段的数据时,可能会遇到如何正确格式化显示日期的问题。本文将深入探讨在...

Global site tag (gtag.js) - Google Analytics