当前位置:中国站长下载文章中心网页编程.NET编程 → ASP.NET2.0服务器控件之捕获回传事件

ASP.NET2.0服务器控件之捕获回传事件

减小字体 增大字体 作者:金属边缘  来源:天极  发布时间:2008-9-1 18:05:56
WebCustomControl类中,实现了以下有关捕获回传事件处理的关键内容:

·控件类WebCustomControl实现IPostBackEventHandler;

·将引发回传的控件的name属性值设置UniqueID;

·实现事件属性结构,维护事件处理程序委托列表;

·在RaisePostBackEvent方法中调用OnClick方法;

下面的代码是应用自定义按钮WebCustomControl的Default.aspx源代码,显示效果如图1和图2所示。

以下为引用的内容:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Register TagPrefix="cc" Namespace="WebControlLibrary" Assembly="WebControlLibrary" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
 void wcc1_Click(object sender, EventArgs e) {
  message.Text = "您刚才点击了上面的按钮";
 }
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>捕获回传事件</title>
</head>
<body>
 <form id="form1" runat="server">
 <center>
  <cc:WebCustomControl ID="wcc1" runat="server" OnClick="wcc1_Click" /> <br /> <br />
  <asp:Label ID="message" runat="server"></asp:Label>
 </center>
</form>
</body>
</html>

 
另外,还有一个与捕获回传事件密切相关的属性AutoPostBack。该属性用于控件的自动回传设置,很多标准的服务器控件中均包含该属性。对于开发人员来讲,是否需要在自行创建的服务器控件中定义该属性是很重要的,需要根据控件的功能需求认真考虑取舍。该属性的关键代码实现如下:

以下为引用的内容:
//定义属性AutoPostBack
public bool AutoPostBack{
 set {
  this._autoPostBack = value;
 }
 get {
  return this._autoPostBack;
 }
}
//在Render方法中添加Page.GetPostBackEventReference()方法
protected override void Render(HtmlTextWriter output){
 ......
 if(this.AutoPostBack) {
  writer.WriteAttribute("ontextchanged","javascript:" + Page.GetPostBackEventReference(this));
 }
 ......
}

由以上代码可知,AutoPostBack属性的实现重点是Page.GetPostBackEventReference方法的应用。该方法获取对客户端脚本函数的引用,调用该函数将使服务器发送回该页,并返回一段表示客户端事件的字符串,实际是一些客户端代码。当AutoPostBack="true"时,服务器控件将发生自动回传,而不需通过Click事件等引发;当AutoPostBack="false",则回传必须经过类似Click的事件引发。

以上介绍的是有关捕获回传事件的具体实现方法。总体来讲不是非常复杂,然而,实现捕获回传事件的具体应用非常灵活,远远没有这么简单,这就需要读者不断的实践才能深入理解。

3、小结

本文首先介绍了利用ASP.NET 2.0技术,为自定义服务器控件实现捕获回传事件的实现方法。通过这些内容,相信读者可以基本掌握实现控件捕获回传事件的方法。在随后的文章中,笔者将继续介绍实现事件处理的另一核心内容--处理回传数据。

上一页  [1] [2]