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>

相关文章
相关标签/搜索