学习自定义web控件编程
来源:互联网 发布:伪造实验数据 编辑:程序博客网 时间:2024/06/01 12:09
public class CustomTextBox : Control
{
private string _text;
public string Text
{
set{this._text = value;}
get{return this._text;}
}
protected override void Render(HtmlTextWriter writer)
{
writer.WriteBeginTag("input");
writer.WriteAttribute("name", this.UniqueID);
if(this.ID != null)
writer.WriteAttribute("id", this.ClientID);
writer.WriteAttribute("value", this.Text);
writer.Write(HtmlTextWriter.TagRightChar);
}
}
Render方法被asp.net调用,HtmlTextWriter对象由系统传入,以面向对象的方式输出html代码。
现在有两个问题需要解决:一是如何在回发后更新Text属性;二是如何实现TextBox控件的TextChanged事件。这需要通过实现IPostBackDataHandler的LoadPostData()方法和RaisePostDataChangedEvent()方法来实现。这两个方法都被asp.net来调用,前者用来读取用户在客户端用户对html元素输入的数据,如果LoasPostData()返回true的话,系统将调用RaisePostDataChangedEvent()。下面是添加的代码:
public bool LoadPostData(string postDataKey,
NameValueCollection postCollection)
{
string presentValue = this.Text;
this.Text = postCollection[postDataKey];
return (presentValue != this.Text);
}
public event EventHandler TextChanged;
public void RaisePostDataChangedEvent()
{
if(this.TextChanged != null)
this.TextChanged(this, new EventArgs());
}
以上的代码真的能够引发TextChanged事件么?能,一定能,即使用户未对html元素的值做任何改变都能在回发后引发TextChanged事件!
public string Text
{
set{this.ViewState["MyText"] = value;}
get{return (string)this.ViewState["MyText"];}
} protected bool _autoPostBack = false;
public bool AutoPostBack
{
set{this._autoPostBack = value;}
get{return this._autoPostBack;}
}
最后一个任务是实现AutoPostBack属性了。Asp.net为此提供了一个方法Page.GetPostBackEventReference(),它返回一段表示客户端事件的字符串,实际是一些客户端代码,只要在Render方法里插入下面的代码就行了,一个TextBox基本完成了!
if(this.AutoPostBack)
writer.WriteAttribute("onchange","javascript:" +
Page.GetPostBackEventReference(this));
- 学习自定义web控件编程
- Web自定义控件FlashLabel
- 创建 Web 自定义控件
- 创建Web自定义控件
- 开发Web自定义控件
- WEB自定义控件小记
- 创建web自定义控件
- 自定义web控件
- 自定义Web Tab控件
- CSS自定义WEB控件
- Web 用户控件与 Web 自定义控件
- 自定义控件编程
- 演练:创建 Web 自定义控件
- 创建 Web 自定义控件1
- 自定义Web DataGrid 翻页控件
- Asp.net Web控件自定义
- 自定义Web上传控件设计
- 自定义Web上传控件设计
- SQLServer和Oracle的常用函数对比
- 我们为什么浮躁?
- D的其他
- 结构化设计的救命稻草-回调机制
- She is available. 她倒底有没有男朋友?
- 学习自定义web控件编程
- D的库
- 对现任VC++.NET首席软件设计师Stan Lippman的采访
- 踏上VC++的征程
- OS,COMPILER,COMPUTER
- [转]用libTemplate实现静态网页的生成
- VPN常见问题原因与解决
- Eric Raymond对于几大开发语言的评价
- [转] PHPlib Template 模板类中文文档