示例:服務器
實現目的:某對象被使用時,將此對象對應的功能按鈕禁止;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>