在WEB自定义控件中实现自动回传功能
在开发自定义的WEB控件时,有时我们想让自定义控件实现自动回传的功能。通常只有BUTTON这样的控件才能实现此功能。如果想实现的话,只要让我们的自定义控件实现IPostBackEventHandler接口就可以了,同时给控件加上事件引发的代码调用。
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
namespace MyWebControls
{
/// <summary>
/// MyCounter 的摘要说明。
/// </summary>
[DefaultProperty("Text"),
ToolboxData("<{0}:MyCounter runat=server></{0}:MyCounter>")]
public class MyCounter : System.Web.UI.WebControls.WebControl,IPostBackEventHandler
{
//在控件中当用户按下增加或减少时,对此数字进行操作。
public int Number
{
get
{
if(ViewState["number"]!=null)
{
return (int)ViewState["number"];
}
return 50;
}
set
{
ViewState["number"]=value;
}
}
//Page.GetPostBackEventReference(this,"inc")在客户端生成一个脚本区(用于上传数据的),同时再进行调用
/// <summary>
/// 将此控件呈现给指定的输出参数。
/// </summary>
/// <param name="output"> 要写出到的 HTML 编写器 </param>
protected override void Render(HtmlTextWriter output)
{
output.Write("当前数字为:"+Number.ToString());
output.Write("<a href=/"javascript:"
+Page.GetPostBackEventReference(this,"inc")
+"/">增加</a>");
output.Write(" ");
output.Write("<a href=/"javascript:"
+Page.GetPostBackEventReference(this,"dec")
+"/">减少</a>");
}
#region IPostBackEventHandler 成员
//实现事件回送接口,HTML中只有BUTTON和IMAGEBUTTON能起回送的发生,如果你想
//让自己的控件也实现点击后自动回送,则实现此接口
//判断回传时的参数。这个控件回送时有二种动作。
public void RaisePostBackEvent(string eventArgument)
{
if(eventArgument=="inc")
{
Number=Number+1;
}
else
{
Number=Number-1;
}
}
#endregion
}
}