Page_Load事件 js腳本 aspx執行順序

示例:服務器

實現目的:某對象被使用時,將此對象對應的功能按鈕禁止;server

後臺代碼:Page_Load() 事件下的代碼對象

前臺代碼:對象不肯定,這裏採用對象的動態綁定事件

運行效果:頁面初始化時,對應的被佔用對象的總功能按鈕不會被禁止,點擊頁面中任一按鈕時,此功能按鈕纔會被禁止。ip

分析:對於頁面的初始化,代碼執行順序:it

        1) Page_Load事件,包括if(!isPostBack){}中的語句;io

        2)向IE發出請求,IE先執行頁面中的腳本語句,此時頁面呈現;class

        對於頁面中的按鈕,代碼執行順序:後臺

        1)IE會先查看此按鈕是否有對應的onclientclick()事件,若是有的話,則要去執行這個事件對應的JS腳本。執行完後,若這個腳本返回false,則IE不會進入服務器去執行後臺回發事件代碼;若這個腳本返回值爲true(默認返回值爲true),則進入服務器區執行後臺代碼。cli

        2)若此按鈕沒有對應的onclientclick()事件,則查看此按鈕是否有回發功能(注意:一部分按鈕的回發功能須要經過語句  AutoPostBack = "True"  來開啓,如 asp:RadioButtonList、asp:TextBox等;

        3)若果按鈕有回發功能:則根據 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="dyPinlu.aspx.cs" Inherits="ManufacturingManagement_paichan_dyPinlu" %> 語句在解決方案中找到指定的類文件(如:

public partial class ManufacturingManagement_paichan_dyPinlu : System.Web.UI.Page

{}

);故這裏需注意,後臺中不要有相同名字的子類;

        4)繼3)所述的動做後,IE會先執行Page_Load事件中的代碼,固然,此時不會再執行if(!IsPostBack){}中的語句。而後再執行按鈕對應的後臺Click事件中的代碼,執行完成後返回客戶端並將執行結果返回給IE,此時IE會將頁面中的Js腳本執行了(固然,若是這個JS是在頁面載入時會執行的話,例如直接在<script language >alert("ddd")</script>就會被IE執行)。

解決方法:在後臺if(!IsPostBack)進行動態綁定,並初始化,爲保證被使用對象及時被禁止,在Page_Load下寫禁止功能代碼

         if (!IsPostBack)
        {
                rblShebeihao.DataSourceID = "SqlDataSource3";
                rblShebeihao.DataTextField = "FurnaceBanchNum";
                rblShebeihao.DataValueField = "FurnaceBanchNum";
                rblShebeihao.DataBind();
                ......
        }

前臺代碼 <asp:RadioButtonList ID="rblShebeihao" runat="server"                      RepeatDirection="Horizontal" AutoPostBack = "True"                      OnSelectedIndexChanged = "shebei_SelectedIndexChanged" >             </asp:RadioButtonList>

相關文章
相關標籤/搜索