《Asp.net服务器控件与组件开发》第9章的NavButton代码的个人研究
来源:互联网 发布:java开发前景如何 编辑:程序博客网 时间:2024/05/16 01:54
NavButton代码
using System.Web.UI.WebControls;
using System.ComponentModel;
namespace WebControlTestItem
{
/// <summary>
/// WebCustomControl 的摘要说明。
/// </summary>
[DefaultEvent("ClickNext"),
DefaultProperty("NextText"),
ToolboxData("<{0}:SimpleButton runat=server></{0}:SimpleButton>")
]
public class SimpleButton:WebControl,IPostBackEventHandler
{
private string _nexttext;
private string _previoustext;
[Bindable(true),
Category("外观"),
DefaultValue("Next"),
Description("显示在按钮上的文字")
]
public virtual string NextText
{
get{ return((_nexttext==null)?String.Empty:_nexttext);}
set{_nexttext=value;}
}
[Bindable(true),
Category("外观"),
DefaultValue("Previous"),
Description("显示在按钮上的文字")
]
public virtual string PreviousText
{
get{ return((_previoustext==null)?String.Empty:_previoustext);}
set{_previoustext=value;}
}
/*protected override HtmlTextWriterTag TagKey
{
get { return HtmlTextWriterTag.Input;}
}
*/
//Click事件的键
private static readonly object EventClickNext=new object();
private static readonly object EventClickPreivous=new object();
//事件属性
[Category("操作"),Description("按下时触发按钮单击事件")]
public event EventHandler ClickNext
{
add{
Events.AddHandler(EventClickNext,value);
}
remove{Events.RemoveHandler(EventClickNext,value);}
}
[Category("操作"),Description("按下时触发按钮单击事件")]
public event EventHandler ClickPreivous
{
add
{
Events.AddHandler(EventClickPreivous,value);
}
remove{Events.RemoveHandler(EventClickPreivous,value);}
}
protected virtual void OnClickNext(EventArgs e)
{
EventHandler clickHandler=(EventHandler)Events[EventClickNext];
if(clickHandler!=null)
clickHandler(this,e);
}
protected virtual void OnClickPreivous(EventArgs e)
{
EventHandler clickHandler=(EventHandler)Events[EventClickPreivous];
if(clickHandler!=null)
clickHandler(this,e);
}
/*protected override void AddAttributesToRender(HtmlTextWriter writer)
{
base.AddAttributesToRender(writer);
writer.AddAttribute(HtmlTextWriterAttribute.Name,this.UniqueID);
writer.AddAttribute(HtmlTextWriterAttribute.Type,"submit");
writer.AddAttribute(HtmlTextWriterAttribute.Value,this.Text);
}*/
#region IPostBackEventHandler 成员
public void RaisePostBackEvent(string eventArgument)
{
// TODO: 添加 SimpleButton.RaisePostBackEvent 实现
if(eventArgument=="下一步")
OnClickNext(EventArgs.Empty);
if(eventArgument=="上一步")
OnClickPreivous(EventArgs.Empty);
}
#endregion
protected override void Render(HtmlTextWriter writer)
{
if(Page!=null)
Page.VerifyRenderingInServerForm(this);
base.Render (writer);
}
protected override void RenderContents(HtmlTextWriter writer)
{
base.RenderContents (writer);
writer.AddAttribute(HtmlTextWriterAttribute.Onclick,Page.GetPostBackEventReference(this,"上一步"));
writer.AddAttribute("language","javascript"); //此句非必须
writer.RenderBeginTag(HtmlTextWriterTag.Button);
writer.Write(this.PreviousText);
writer.RenderEndTag();
writer.Write(" ");
writer.AddAttribute(HtmlTextWriterAttribute.Onclick,Page.GetPostBackEventReference(this,"下一步"));
writer.AddAttribute("language","javascript");//此句非必须
writer.RenderBeginTag(HtmlTextWriterTag.Button);
writer.Write(this.NextText);
writer.RenderEndTag();
}
}
}
以上代码是按照书第9章的NavButton代码修改的代码,原书中属性是用ViewState字典做的,但运行时按钮上没有任何字符,我把它改成普通属性,就好了。
另外,PreviousText和NextText不能设置为Previous和Next,否则运行时按钮上也没有任何字符。这一点很让人困惑。注释部分是书上前一个例子的代码。
- 《Asp.net服务器控件与组件开发》第9章的NavButton代码的个人研究
- Asp.Net 服务器控件的个人理解
- ASP.NET 2.0服务器控件与组件开发高级编程
- ASP.NET服务器控件的开发(1)
- ASP.NET服务器控件的开发(2)
- ASP.NET服务器控件的开发(3)
- ASP.NET服务器控件的开发(4)
- 开发简单的 ASP.NET 服务器控件
- HTML服务器控件与ASP.NET服务器控件的区别
- asp.net服务器控件与html服务器控件的区别
- asp.net服务器控件与html服务器控件的区别
- Asp.net组件与控件开发读书笔记
- 『Asp.Net 组件』第一个 Asp.Net 服务器组件:自己的文本框控件
- 『Asp.Net 组件』Asp.Net 服务器组件 内嵌图片:自己的图片控件
- ASP.NET组件与开发之复合控件的事件处理
- 『Asp.Net 组件』Asp.Net 服务器组件 的开发优势和劣势
- ASP.NET自定义控件组件开发 第二章 继承WebControl的自定义控件
- ASP.NET自定义控件组件开发 第二章 继承WebControl的自定义控件
- UML基础知识
- http://www.hanselman.com/blog/default.aspx
- Java对象转为String的几种常用方法剖析
- Thinking in Patterns Problem-Solving Techniques using Java
- 成功激励格言精选
- 《Asp.net服务器控件与组件开发》第9章的NavButton代码的个人研究
- [原创]在C#中改变系统时间 && 得到系统时间改变通知
- 模块系统与非侵入性
- 详解Java中的指针、引用及对象的clone
- ASP存储过程
- 怎样在J2EE组件中引用和查找Web服务
- Java Socket编程中的一个秘密类
- 论Asp与XML的关系
- 讲解关于编写跨平台Java程序时的注意事项