国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
ASP.NET頁(yè)面——頁(yè)面事件

     上篇文章寫(xiě)到ASP.NET頁(yè)面的生命周期。詳見(jiàn):http://www.cnblogs.com/zhaozhan/archive/2009/06/21/1507740.html。

     Page_PreInit事件來(lái)執(zhí)行以下操作:檢查IsPostBack屬性來(lái)確定是不是第一次處理該頁(yè),創(chuàng)建或重新創(chuàng)建動(dòng)態(tài)控件,動(dòng)態(tài)設(shè)置主控頁(yè),動(dòng)態(tài)設(shè)置Theme屬性,讀取或設(shè)置配置文件的屬性值。如果請(qǐng)求回發(fā)請(qǐng)求,則空間的值尚未從視圖狀態(tài)還原,如果在此階段設(shè)置控件屬性,則其值可能在下一時(shí)間中被重寫(xiě)。

     Page_Init事件中所有的控件都設(shè)為默認(rèn)的狀態(tài),但此時(shí)視圖狀態(tài)沒(méi)有被恢復(fù)。這意味著Page_Init不應(yīng)該用來(lái)處理服務(wù)器控件的值和狀態(tài)。

     InitComplete事件由Page對(duì)象引發(fā)。使用該事件來(lái)處理要求先完成所有初始化工作的任務(wù)。

     Page_PreLoad:如果需要在Load事件之前對(duì)頁(yè)或控件執(zhí)行處理使用。在Page引發(fā)該事件后,它會(huì)為自身和所有控件加載視圖狀態(tài),然后會(huì)處理Request實(shí)例包括的任何回發(fā)數(shù)據(jù)。

     Page_Load事件是ASP.NET編程中最常用的時(shí)間。它在Page_Init事件之后調(diào)用。Page_Load事件和Page_Init事件之間的主要差別是到觸發(fā)Page_Load事件時(shí)。所有的服務(wù)器空間的視圖狀態(tài)都將被恢復(fù)。這使得該時(shí)間可以很理想地用于操縱空間并準(zhǔn)備頁(yè)面的內(nèi)容,然后再呈現(xiàn)給客戶端。

     控件事件在頁(yè)面初始化階段之后進(jìn)行處理。來(lái)處理特定控件的事件,如Button控件的Click事件或TextBox控件的TextChanged事件。在回發(fā)請(qǐng)求中,如果頁(yè)包含驗(yàn)證程序控件,請(qǐng)?jiān)趫?zhí)行任何處理之前Page和各個(gè)驗(yàn)證控件的IsValid屬性。

     LoadComplete事件來(lái)處理加載頁(yè)面上的所有其他控件的任務(wù)。

     PreRender事件對(duì)頁(yè)或其空間的內(nèi)容進(jìn)行最后的更改。

     SaveStateComplete:在該事件發(fā)生前,已針對(duì)頁(yè)和所有控件保存了ViewState。將忽略此時(shí)對(duì)頁(yè)或控件進(jìn)行的任何更改。

使用該事件執(zhí)行滿足以下條件的任務(wù):要求已經(jīng)保存了視圖狀態(tài),但未對(duì)控件進(jìn)行任何更改。

     Render:這不是事件;在處理的這個(gè)階段,Page對(duì)象會(huì)在每個(gè)控件上調(diào)用此方法。所有 ASP.NET Web 服務(wù)器控件都有一個(gè)用于寫(xiě)出發(fā)送給瀏覽器的控件標(biāo)記的Render方法。如果創(chuàng)建自定義控件,通常要重寫(xiě)此方法以輸出控件的標(biāo)記。不過(guò),如果自定義控件只合并標(biāo)準(zhǔn)的 ASP.NET Web 服務(wù)器控件,不合并自定義標(biāo)記,則不需要重寫(xiě)Render方法。用戶控件(.ascx 文件)自動(dòng)合并呈現(xiàn),因此不需要在代碼中顯式呈現(xiàn)該控件。

     UnLoad事件首先針對(duì)每個(gè)控件發(fā)生,繼而針對(duì)該頁(yè)發(fā)生。在控件中,使用該事件對(duì)特定控件執(zhí)行最后清理,如關(guān)閉控件特定數(shù)據(jù)庫(kù)連接。

對(duì)于頁(yè)自身,使用該事件來(lái)執(zhí)行最后清理工作,如:關(guān)閉打開(kāi)的文件和數(shù)據(jù)庫(kù)連接,或完成日志記錄或其他請(qǐng)求特定任務(wù)。在卸載階段,頁(yè)及其控件已被呈現(xiàn),因此無(wú)法對(duì)響應(yīng)流做進(jìn)一步更改。如果嘗試調(diào)用方法(如Response.Write 方法),則該頁(yè)將引發(fā)異常。

     下面做個(gè)簡(jiǎn)單的Demo:

     在下面的例子,創(chuàng)建一個(gè)投票的Web窗體,允許用戶投票選擇喜愛(ài)的顏色。

   <form id="form1" runat="server"><div style=" color:Maroon; font-size:5; font-weight:bold;"><h2>Vote For Your Favorite Color!</h2><asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" BorderColor="#DEDA84"BorderStyle="None" CellPadding="3" CellSpacing="2" BorderWidth="1px" BackColor="#DEBA84"><SelectedRowStyle Font-Bold="true" ForeColor="White" BackColor="#738A9C" /><RowStyle ForeColor="#8C4510" BorderColor="#FFF7E7" /><HeaderStyle  Font-Bold="true" ForeColor="White" BackColor="#A55129"/><FooterStyle ForeColor="#8C4510" BackColor="#F7DFB5" /><Columns><asp:BoundField DataField="Key" HeaderText="Name" /><asp:BoundField DataField="Value" HeaderText="# of Votes" /><asp:ButtonField Text="Vote" ButtonType="Button" HeaderText="Vote" CommandName="Vote" /></Columns></asp:GridView></div><asp:Button ID="btnReset" runat="server" Text="Reset Votes" /></form>
 
    在Page_Load事件中:或者把所有的投票數(shù)設(shè)為初始的零值,或者從應(yīng)用程序的緩存中檢索投票數(shù)。
    protected Hashtable VoteTally;protected string[] ColorList = { "Red","Green","Blue","Black","White"};protected void Page_Load(object sender, EventArgs e){VoteTally = new Hashtable();foreach (string strKey in ColorList){if (Cache.Get(strKey) == null)VoteTally.Add(strKey, 0);elseVoteTally.Add(strKey, Cache.Get(strKey));}}
 
   在頁(yè)面卸載時(shí),把這些值緩存起來(lái),是頁(yè)面的所有其他用戶也能投票。
   protected void Page_UnLoad(object sender, EventArgs e){foreach (string strKey in ColorList){Cache.Insert(strKey, VoteTally[strKey]);}}
 
   當(dāng)用戶點(diǎn)擊某一行的命令按鈕投票選擇一種顏色時(shí),觸發(fā)RowComand。這是一個(gè)事件起泡(event bubbling),容器控件中的一個(gè)子控件引起容器控件的一個(gè)事件被觸發(fā)。控件事件是在Page_Load事件觸發(fā)之后觸發(fā)的。
    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e){if (e.CommandName == "Vote"){int id = Convert.ToInt32(e.CommandArgument);string strKey = GridView1.Rows[id].Cells[0].Text.ToString();VoteTally[strKey] =(int) VoteTally[strKey] + 1;}}
 
    在Page_PreRender事件期間把數(shù)據(jù)源綁定到GridView。在PreRender事件綁定的好處是可以清除兩次綁定數(shù)據(jù)的情況(一次在Page_Load中,一次在RowComand中),通過(guò)把綁定放到Page_PreRender中,只需把綁定數(shù)據(jù)的代碼放到一個(gè)地方,它可以覆蓋所有的情況。
    private void Page_PreRender(object sender, EventArgs e){GridView1.DataSource = VoteTally;GridView1.DataBind();}
 
    清除所有的緩存。重新投票計(jì)數(shù)。
    protected void btnReset_Click(object sender, EventArgs e){foreach (string strKey in ColorList){VoteTally[strKey] = 0;Cache.Insert(strKey, 0);}}
 
    頁(yè)面的顯示效果如下:
    
 
 
   在Global.asax設(shè)置Application_BeginRequest和Application_EndRequest方法。統(tǒng)計(jì)頁(yè)面時(shí)間。
   void Application_BeginRequest(object sender, EventArgs e){Application[Request.UserHostAddress.ToString()] = DateTime.Now;}void Application_EndRequest(object sender, EventArgs e){DateTime sTime = (DateTime)Application[Request.UserHostAddress.ToString()];Application.Remove(Request.UserHostAddress.ToString());Response.Write("<hr/>");Response.Write("Total Page Processing Time=");Response.Write((DateTime.Now.Ticks-sTime.Ticks)/1000000.0);Response.Write("Seconds");}
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
IIS處理Asp.net請(qǐng)求和 Asp.net頁(yè)面生命周期-程序開(kāi)發(fā)-紅黑聯(lián)盟
GridView 控件事件發(fā)生順序
ASP.NET2.0_緩存
ASP.NET 2.0頁(yè)面狀態(tài)持續(xù):ViewState與控件 - 51CTO.COM
asp.net2.0中使用存儲(chǔ)過(guò)程的方法
ASP.net 2.0資料收藏合集
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服