最近发现一个很严重的问题:譬如在页面中有一个TextBox控件,在Page_Load事件中设置其文本为“abcdefg” 在该页面的Button1的Click事件中又将其设置为“hhhhhhhh” 本来点击button1控件后其文本应该变为“hhhhhhhhh”,但为什么还是原来的文本呢?
   
    通过断点跟踪发现,每次在点下button1控件时,编译器并不是直接去执行click事件中的代码,而是先去重新加载页面,即执行Page_Load事件,然后再执行click事件,于是我断言:单击button控件都会先去加载页面然后再执行click事件中的代码。  但是有人却跟我说不是这样的,而正好是跟我的想法相反,但为什么断点跟踪的时候却是先加载再执行click事件呢?
    请大侠们各抒己见,这页面的事件的发生顺序和button控件事件的发生顺序到底是怎样的啊?
    最近被此等问题困扰已久,望高手赶快给点意见吧!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

解决方案 »

  1.   

    Page_Load肯定是比control的Event先发生如果你希望Page_Load里面的代码只在第一次发生
    在Page_Load里面加
    if(!IsPostBack)
    {}
      

  2.   

    如果希望知道页面加载的顺序,请问Trace="true"
    参考http://blog.csdn.net/lunasea0_0/archive/2009/08/08/4426163.aspx
      

  3.   

    你说的都是地球人知道的Page_Load {
     if(!IsPostBack) { 
         // here...........
     }
    }
      

  4.   

    就是理解Page.IsPostBack属性
    当页面第一次加载或页面回发时为false
      

  5.   

    I 服了 YOU。。
      你想笑死我啊
      

  6.   


    ispostback判断页面是否是被传回的,如果不是,值为false,代表页面是第一次被加载。
    那么,你希望实现的就是,在第一次被加载的时候,控件文本为某某某。
    ispostback值为true时,说明是被传回的,那么,此时,你就不能再给控件文本赋值,否则,无论你怎么写BUTTON事件,控件文本的值都是不会改变的。因为,每次加载,你都会给控件文本赋值成某某某。
    这样,自然是无法实现你想要的功能的。
      

  7.   

    页面重新加载了一次
    在Page_Load里面加
    if(!IsPostBack)
    {} 
      

  8.   

    设置只在第一次加载时进行TextBox控件的显示文本的初始化。
      

  9.   

    设置只在第一次加载时进行TextBox控件的显示文本的初始化。
      

  10.   

    呵呵,我习惯性的在 Page_Load中写//这里写每次都要执行的代码
    if(Page.IsPostBack)return;
    //这里写只执行一次的代码