ASP.NET 中Master 页面事件触发 内容页事件
2011-01-30 17:00
429 查看
我们知道,母版页与内容页合并后事件的发生顺序:
1.母版页控件 Init 事件。
2.内容控件 Init 事件。
3.母版页 Init 事件。
4.内容页 Init 事件。
5.内容页 Load 事件。
6.母版页 Load 事件。
7.内容控件 Load 事件。
8.内容页 PreRender 事件。
9.母版页 PreRender 事件。
10.母版页控件 PreRender 事件。
11.内容控件 PreRender 事件。
MSDN上说,引发事件的一般规则是初始化事件从最里面的控件向最外面的控件引发,所有其他事件则从最外面的控件向最里面的控件引发。请记住,母版页会合并到内容页中并被视为内容页中的一个控件,这一点十分有用。
所以有时候,我们所需功能的实现需要了解Master页与内容页事件的交互,
下面示例为: MasterPage里有一日历控件,选择日期变化时,内容页产生相应的动作(页面里简单代码如下)。
(环境:VS2005)
(PM.Master)
(PM.Master.cs)
声明一个事件委托类型,该委托将事件与事件处理程序连接。在此,DisplayPictures 委托 会连接Master页与内容页
的事件触发机制。
内容页中在类似 page_load 事件里通过Master页的声明的委托把事件注册到MasterPage里。
注意使用MasterPage的类型PM,实例化Master。
(Schedule.aspx.cs)
类似这种方法:this.Page.Master.FindControl("controlID")可以找到MasterPage里的控件并获取其值。
1.母版页控件 Init 事件。
2.内容控件 Init 事件。
3.母版页 Init 事件。
4.内容页 Init 事件。
5.内容页 Load 事件。
6.母版页 Load 事件。
7.内容控件 Load 事件。
8.内容页 PreRender 事件。
9.母版页 PreRender 事件。
10.母版页控件 PreRender 事件。
11.内容控件 PreRender 事件。
MSDN上说,引发事件的一般规则是初始化事件从最里面的控件向最外面的控件引发,所有其他事件则从最外面的控件向最里面的控件引发。请记住,母版页会合并到内容页中并被视为内容页中的一个控件,这一点十分有用。
所以有时候,我们所需功能的实现需要了解Master页与内容页事件的交互,
下面示例为: MasterPage里有一日历控件,选择日期变化时,内容页产生相应的动作(页面里简单代码如下)。
(环境:VS2005)
(PM.Master)
... ... <form id="form1" runat="server"> ... ... <div id="divCalendar"> <asp:Calendar ID="Calendar1" runat="server" OnSelectionChanged="Calendar1_SelectionChanged" > </asp:Calendar> <div> <div id="container"> <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"> </asp:ContentPlaceHolder> </div> ... ... </form> ... ...
(PM.Master.cs)
声明一个事件委托类型,该委托将事件与事件处理程序连接。在此,DisplayPictures 委托 会连接Master页与内容页
的事件触发机制。
public partial class PM : System.Web.UI.MasterPage { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { Calendar1.SelectedDate = DateTime.Now.Date; } ... ... } public event EventHandler DisplayPictures; //public delegate void Display(string ss); protected void Calendar1_SelectionChanged(object sender, EventArgs e) { Calendar ca = sender as Calendar; string selectDate= ca.SelectedDate.ToString("yyyyMMdd"); DisplayPictures(this, null); } ... ... }
内容页中在类似 page_load 事件里通过Master页的声明的委托把事件注册到MasterPage里。
注意使用MasterPage的类型PM,实例化Master。
(Schedule.aspx.cs)
protected void Page_Load(object sender, EventArgs e) { ... if (IsPostBack) { ((PM)Master).DisplayPictures += new EventHandler(DisplayThisPage); } ... }
类似这种方法:this.Page.Master.FindControl("controlID")可以找到MasterPage里的控件并获取其值。
相关文章推荐
- ASP.NET GridView 后台绑定行点击行触发SelectedIndexChanged,页面刷新后,只有一页的情况下,事件只触发一次
- 引用asp.net母版页后,母版页和内容页的页面事件执行顺序
- 获取当前页面触发事件的控件(asp.net)
- 引用asp.net母版页后,母版页和内容页的页面事件执行顺序
- 手动触发asp.net页面验证控件事件
- ASP.NET页面回车键触发Button按钮事件问题
- 引用asp.net母版页后,母版页和内容页的页面事件执行顺序
- asp.net页面中 回车触发提交事件
- asp.net 页面回车触发button按钮事件-(转载)
- asp.net中,js改变textBox的文本内容的触发事件是onpropertychange
- asp.net 页面回车触发button按钮事件
- ASP.NET页面生命周期(包含页面的回传和事件触发的执行顺序)
- [转]asp.net 页面回车触发button按钮事件
- ASP.NET页面的生命周期以及在生命周期内会被触发的事件
- asp.net 页面回车触发button按钮事件
- asp.net 点击完按钮后刷新页面发现还会触发buttonClick事件
- asp.net 页面回车触发button按钮事件
- 在asp.net 页面中,点击回车键触发Button事件
- asp.net2003页面触发事件如何控制滚动条的位置
- asp.net页面触发事件panel滚动条高度不变的实现方法