最近发现一个很严重的问题:譬如在页面中有一个TextBox控件,在Page_Load事件中设置其文本为“abcdefg” 在该页面的Button1的Click事件中又将其设置为“hhhhhhhh” 本来点击button1控件后其文本应该变为“hhhhhhhhh”,但为什么还是原来的文本呢?
通过断点跟踪发现,每次在点下button1控件时,编译器并不是直接去执行click事件中的代码,而是先去重新加载页面,即执行Page_Load事件,然后再执行click事件,于是我断言:单击button控件都会先去加载页面然后再执行click事件中的代码。 但是有人却跟我说不是这样的,而正好是跟我的想法相反,但为什么断点跟踪的时候却是先加载再执行click事件呢?
请大侠们各抒己见,这页面的事件的发生顺序和button控件事件的发生顺序到底是怎样的啊?
最近被此等问题困扰已久,望高手赶快给点意见吧!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
通过断点跟踪发现,每次在点下button1控件时,编译器并不是直接去执行click事件中的代码,而是先去重新加载页面,即执行Page_Load事件,然后再执行click事件,于是我断言:单击button控件都会先去加载页面然后再执行click事件中的代码。 但是有人却跟我说不是这样的,而正好是跟我的想法相反,但为什么断点跟踪的时候却是先加载再执行click事件呢?
请大侠们各抒己见,这页面的事件的发生顺序和button控件事件的发生顺序到底是怎样的啊?
最近被此等问题困扰已久,望高手赶快给点意见吧!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
在Page_Load里面加
if(!IsPostBack)
{}
参考http://blog.csdn.net/lunasea0_0/archive/2009/08/08/4426163.aspx
if(!IsPostBack) {
// here...........
}
}
当页面第一次加载或页面回发时为false
你想笑死我啊
ispostback判断页面是否是被传回的,如果不是,值为false,代表页面是第一次被加载。
那么,你希望实现的就是,在第一次被加载的时候,控件文本为某某某。
ispostback值为true时,说明是被传回的,那么,此时,你就不能再给控件文本赋值,否则,无论你怎么写BUTTON事件,控件文本的值都是不会改变的。因为,每次加载,你都会给控件文本赋值成某某某。
这样,自然是无法实现你想要的功能的。
在Page_Load里面加
if(!IsPostBack)
{}
if(Page.IsPostBack)return;
//这里写只执行一次的代码