我自己看msdn上的解释看的很糊涂,希望能分别给我举个可以运行的例子(嫌麻烦可以将我下面提供的代码改编一下也行的)test.aspx<%@ Page Language="c#"%>
<%@ Register TagPrefix="my" Assembly="test" Namespace="test"%>
<html>
<head>
<script Runat="server" Language="c#">
void oSimpleButton_Click(object sender,EventArgs e){
label.Text="success!";
}
</script>
</head>
<body>
<form Runat="server" ID="oForm">
<my:SimpleButton Text="SimpleButton" Runat="server" OnClick="oSimpleButton_Click" ID="oSimpleButton"/>
<br/>
<asp:Label Runat="server" ID="label"/>
</form>
</body>
</html>test.dllusing System;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace test{
public class SimpleButton:WebControl,IPostBackEventHandler{ public event EventHandler Click; public virtual string Text{
get{
object oText = ViewState["Text"];
return ( oText == null ) ? String.Empty : ( string ) oText;
}
set{
ViewState["Text"] = value;
}
} public virtual void OnClick ( EventArgs e ){
if( Click != null ){
Click( this , e );
}
} void IPostBackEventHandler.RaisePostBackEvent ( string eventArgument ){
OnClick ( EventArgs.Empty );
} protected override HtmlTextWriterTag TagKey{
get{
return HtmlTextWriterTag.Input;
}
} protected override void AddAttributesToRender ( HtmlTextWriter writer ){
base.AddAttributesToRender ( writer );
writer.AddAttribute( HtmlTextWriterAttribute.Type , "submit" );
writer.AddAttribute( HtmlTextWriterAttribute.Value , Text );
writer.AddAttribute(HtmlTextWriterAttribute.Name,UniqueID);
writer.AddAttribute(HtmlTextWriterAttribute.Id,ClientID);
} protected override void Render ( HtmlTextWriter writer ){
if( Page != null ){
Page.VerifyRenderingInServerForm(this);
}
base.Render(writer);
} protected override void OnPreRender(EventArgs e){
base.OnPreRender(e);
}
}
}
<%@ Register TagPrefix="my" Assembly="test" Namespace="test"%>
<html>
<head>
<script Runat="server" Language="c#">
void oSimpleButton_Click(object sender,EventArgs e){
label.Text="success!";
}
</script>
</head>
<body>
<form Runat="server" ID="oForm">
<my:SimpleButton Text="SimpleButton" Runat="server" OnClick="oSimpleButton_Click" ID="oSimpleButton"/>
<br/>
<asp:Label Runat="server" ID="label"/>
</form>
</body>
</html>test.dllusing System;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace test{
public class SimpleButton:WebControl,IPostBackEventHandler{ public event EventHandler Click; public virtual string Text{
get{
object oText = ViewState["Text"];
return ( oText == null ) ? String.Empty : ( string ) oText;
}
set{
ViewState["Text"] = value;
}
} public virtual void OnClick ( EventArgs e ){
if( Click != null ){
Click( this , e );
}
} void IPostBackEventHandler.RaisePostBackEvent ( string eventArgument ){
OnClick ( EventArgs.Empty );
} protected override HtmlTextWriterTag TagKey{
get{
return HtmlTextWriterTag.Input;
}
} protected override void AddAttributesToRender ( HtmlTextWriter writer ){
base.AddAttributesToRender ( writer );
writer.AddAttribute( HtmlTextWriterAttribute.Type , "submit" );
writer.AddAttribute( HtmlTextWriterAttribute.Value , Text );
writer.AddAttribute(HtmlTextWriterAttribute.Name,UniqueID);
writer.AddAttribute(HtmlTextWriterAttribute.Id,ClientID);
} protected override void Render ( HtmlTextWriter writer ){
if( Page != null ){
Page.VerifyRenderingInServerForm(this);
}
base.Render(writer);
} protected override void OnPreRender(EventArgs e){
base.OnPreRender(e);
}
}
}
解决方案 »
- vs2008 webserver地址不能更新怎么办?
- 在本地上word可以转html,到了服务器上却不行,急!!在线等
- 我想替换某两个字符串之间的所有字符,应该怎么做?
- 求类似my space网站的源代码,原来在csdn上见过,
- 请问Session+ArrayList做购物车要怎么实现购物车的更新?(顶者有分)
- 怎样改变ewebeditor在线编辑器的上传路径??
- 关于datagrid中较长记录显示的问题
- 大家说说一个用户权限管理系统该怎样做?
- 如何做一个无边框的ListBox?
- 两个asp函数改成asp.net后要怎么写?
- 关于PushButton的问题!
- 用asp.net访问文件问题 顶者有分
[Visual Basic]
Public Overridable Sub RegisterRequiresRaiseEvent( _
ByVal control As IPostBackEventHandler _
)
[C#]
public virtual void RegisterRequiresRaiseEvent(
IPostBackEventHandler control
);
[C++]
public: virtual void RegisterRequiresRaiseEvent(
IPostBackEventHandler* control
);
[JScript]
public function RegisterRequiresRaiseEvent(
control : IPostBackEventHandler
);
参数
control
要注册的控件。
备注
每个 Page 请求只能注册一个服务器控件。
示例
[Visual Basic, C#] 此示例使用 RegisterRequiresRaiseEvent 方法将 Button Web 服务器控件注册为要求引发事件。一旦注册了第一个 Button,就可以使代码中声明的第二个 Button 将第一个按钮的单击事件的结果发送到页。
[Visual Basic]
Sub DisplayUserName(Sender As Object, e As EventArgs)
Response.Write("Welcome to " + userName.Text)
End Sub Sub MyRaiseEvent(Sender As Object, e As EventArgs)
'Raises a post back event for a control.
Me.RaisePostBackEvent(userButton, "")
End Sub Sub Page_Load(Sender As Object, e As EventArgs)
'Registers a control as one that requires postback handling
Me.RegisterRequiresRaiseEvent(userButton)
End Sub
[C#]
void DisplayUserName(Object sender, EventArgs ea)
{
Response.Write("Welcome to " + userName.Text);
}
void RaiseEvent(Object sender, EventArgs ea)
{
// Raise a post back event for a control.
this.RaisePostBackEvent(userButton, "");
}
void Page_Load(Object sender, EventArgs ea)
{
// Register a control as one that requires postback handling.
this.RegisterRequiresRaiseEvent(userButton);
}
RegisterRequiresRaiseEvent为事件的冒泡,即注册事件能在父级中进行处理(类似Repeater中ItemCommand事件可以处理ItemTemplate模板中的子控件事件)
RaisePostBackEvent:通知引起回发的服务器控件:它应处理进入的回发事件。void DisplayUserName(Object sender, EventArgs ea)
{
Response.Write("Welcome to " + Server.HtmlEncode(userName.Text));
}
void RaiseEvent(Object sender, EventArgs ea)
{
// Raise a post back event for a control.
this.RaisePostBackEvent(userButton, "");
}
void Page_Load(Object sender, EventArgs ea)
{
// Register a control as one that requires postback handling.
this.RegisterRequiresRaiseEvent(userButton);
}void DisplayUserName(Object sender, EventArgs ea)
{
Response.Write("Welcome to " + Server.HtmlEncode(userName.Text));
}
void RaiseEvent(Object sender, EventArgs ea)
{
// Raise a post back event for a control.
this.RaisePostBackEvent(userButton, "");
}
void Page_Load(Object sender, EventArgs ea)
{
// Register a control as one that requires postback handling.
this.RegisterRequiresRaiseEvent(userButton);
}