[转帖]内容页响应母版页控件的事件
2007-08-21 16:14
363 查看
在内容页里面,如果想响应位于母版页的控件的事件,该怎么办呢?
MSDN开宗明义地告诉我们:对于控件而言,事件是在本地处理的,即内容页中的控件在内容页中引发事件,母版页中的控件在母版页中引发事件。控件事件不会从内容页发送到母版页。同样,也不能在内容页中处理来自母版页控件的事件。
那是否意味着内容页中不能处理母版页控件的事件?如果不行的话,真不方便!
不过我试了一下,发现只要将我们希望执行的函数委托给该控件的事件就可以。
比如说,在母版页中有个按扭
<asp:Button ID="Button1" runat="server" Text="Button"/>
那么在内容页中可以在Page_Load里委托函数:
protected void Page_Load(object sender, EventArgs e)
{
Button B1 = (Button)Page.Master.FindControl("Button1");
B1.Click += new EventHandler(B1_Click);
}
然后将自己希望执行的代码放在函数B1_Click里:
protected void B1_Click(object sender, EventArgs e)
{
Response.Write("Hello World!");
}
运行以后,按下Button1,页面即会显示Hello World!
如果母版页中也有该按扭Click事件:
protected void Button1_Click(object sender, EventArgs e)
{
Response.Write("Hello BeiJing!");
}
那么这两个函数都会执行。顺序是先母版页,后内容页。
事件本质上是一个委托。委托这个东西,我的理解是一个函数的执行器,将函数传给它(委托给它,+=),就会按照先后顺序执行。委托就好比一支手枪,函数就好比子弹。只要子弹尺寸口径合适(函数的参数、类型符合声明),不管是中国造的子弹,还是德国造的子弹,都可以打出去。给一发打一发,给两发打两发。
另外,访问母版页的控件,可以通过类似(Button)Page.Master.FindControl("Button1");的方式。如果想访问母版页的属性,需要在内容页加入类似一句:<%@ MasterType virtualpath="~/Master/list.master" %>
然后就可以通过 Master.属性的方式访问了。注意前面没有Page.。
MSDN开宗明义地告诉我们:对于控件而言,事件是在本地处理的,即内容页中的控件在内容页中引发事件,母版页中的控件在母版页中引发事件。控件事件不会从内容页发送到母版页。同样,也不能在内容页中处理来自母版页控件的事件。
那是否意味着内容页中不能处理母版页控件的事件?如果不行的话,真不方便!
不过我试了一下,发现只要将我们希望执行的函数委托给该控件的事件就可以。
比如说,在母版页中有个按扭
<asp:Button ID="Button1" runat="server" Text="Button"/>
那么在内容页中可以在Page_Load里委托函数:
protected void Page_Load(object sender, EventArgs e)
{
Button B1 = (Button)Page.Master.FindControl("Button1");
B1.Click += new EventHandler(B1_Click);
}
然后将自己希望执行的代码放在函数B1_Click里:
protected void B1_Click(object sender, EventArgs e)
{
Response.Write("Hello World!");
}
运行以后,按下Button1,页面即会显示Hello World!
如果母版页中也有该按扭Click事件:
protected void Button1_Click(object sender, EventArgs e)
{
Response.Write("Hello BeiJing!");
}
那么这两个函数都会执行。顺序是先母版页,后内容页。
事件本质上是一个委托。委托这个东西,我的理解是一个函数的执行器,将函数传给它(委托给它,+=),就会按照先后顺序执行。委托就好比一支手枪,函数就好比子弹。只要子弹尺寸口径合适(函数的参数、类型符合声明),不管是中国造的子弹,还是德国造的子弹,都可以打出去。给一发打一发,给两发打两发。
另外,访问母版页的控件,可以通过类似(Button)Page.Master.FindControl("Button1");的方式。如果想访问母版页的属性,需要在内容页加入类似一句:<%@ MasterType virtualpath="~/Master/list.master" %>
然后就可以通过 Master.属性的方式访问了。注意前面没有Page.。
相关文章推荐
- 内容页响应母版页控件的事件(内容页共享母版页的某个控件事件)(用户控件增加一个委托)
- 内容页响应母版页控件的事件
- 内容页响应母版页控件的事件
- 内容页响应母版页控件的事件
- Android如何让ListView的子组件按钮响应单击事件并修改该项子控件内容
- 在内容页中调用母版页控件、响应控件消息(用户控件、服务器控件有所不同)
- 有母版页的内容页中的PreInit事件找不到控件的问题
- 母版页,内容页,控件 事件执行顺序
- 【转】wxPython控件学习之TextCtrl(三)响应文本控件事件
- 引用asp.net母版页后,母版页和内容页的页面事件执行顺序
- ASP.Net访问母版页(MasterPage)控件、属性、方法及母版页中调用内容页的方法
- 在内容页中修改母版页控件的属性
- jQuery向动态生成的内容添加事件响应(jquery live方法简介)
- 扩展GridView控件(6) - 响应行的单击事件和双击事件
- 动态建立右键菜单(一级/二级/三级) 响应鼠标单击事件及修改项的内容
- 引用asp.net母版页后,母版页和内容页的页面事件执行顺序
- 【QT事件】大致了解一下QT中控件响应流程
- 常用界面控件种类和使用方法、常用控件的事件响应方法、常用内置视图种类和使用方法
- 使用RxBinding响应控件的异步事件
- iOS-控件响应用户控制事件之事件处理