现在的位置: 首页 > 综合 > 正文

在WEB自定义控件中实现自动回传功能

2012年08月11日 ⁄ 综合 ⁄ 共 1443字 ⁄ 字号 评论关闭

在开发自定义的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(" &nbsp;");
   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
 }
}

抱歉!评论已关闭.