void RaisePostBackEvent(string eventArgument)
{
OnClick(EventArgs.Empty);
}
RaisePostBackEvent方法有一个eventArgument参数用来传递事件数据.代码实现了一个空参数传递(eventArgument参数为空)的事件OnClick(EventArgs.Empty)
再比较一下示例一的代码,因为其用到了两个按钮
Page.GetPostBackEventReference方法用来传递参数
RaisePostBackEvent方法则以传递参数来判断触发哪个按钮
小结:
在控件中直接实现按钮事件,则无需定义自定义事件,但别忘了在RaisePostBackEvent方法中根据传递过来的不同参数来加以判断.
(2)以自定义事件实现
根据示例一上面的代码加上自定义委托和事件,如下代码(只列出局部代码,具体可在文章最后下载代码)
ASP.NET控件开发基础示例二
- void IPostBackEventHandler.RaisePostBackEvent(string eventArgument)
- {
- if (eventArgument == "Previous")
- OnClickPrevious(EventArgs.Empty);
- else if (eventArgument == "Next")
- OnClickNext(EventArgs.Empty);
- }
调用代码如下
- protected void NavButtons2_1_ClickPrevious(object sender, EventArgs e)
- {
- Label1.Text = "你点击了PreviousText按钮";
- }
-
- protected void NavButtons2_1_ClickNext(object sender, EventArgs e)
- {
- Label1.Text = "你点击了NextText按钮";
- }
小结:在示例一的基础上去除直接实现好的按钮事件,然后自定义事件.
再次提醒如果大家对回发事件,还请再参考一些文章先弄清楚,或者也可以看看我写的第三篇文章.
好了,上面讲的都非复合控件,但复合控件实现起来却很相似,或者可以说更加简单.
下面先来看个简单的示例(大家知道button按钮有CommandName属性和CommandArgument属性)
ASP.NET控件开发基础示例三
- ﹤%@ Page Language="C#" %﹥
-
- ﹤!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"﹥
- ﹤script runat="server"﹥
-
- protected
2/4 首页 上一页 1 2 3 4 下一页 尾页 |