[ASP.NET]TextBox的TextChanged事件

[ASP.NET]TextBox的TextChanged事件

一般來說,在ASP.NET中,我們要在某TextBox的Changed事件中判斷該值然後做一些處理,會設定TextBox的 AutoPostBack="True"及設定ontextchanged事件處理函式(ontextchanged="TextBox2_TextChanged")。

最近幫同事查一個TextBox Postback後,TextBox中的值都不見的問題!

他將原本TextBox會Postback到Server端處理,並將其他TextBox的資料清掉的Logic,改在JavaScript之中,並將TextBox的AutoPostBack設成了False。但卻發生了Submit資料到Server端時,原本有資料的那些TextBox被清掉了!

進去看程式才發現,他只將TextBox的AutoPostBack設成False,除沒把TextBox的ontextchanged事件處理函式移掉,就造成Submit到Server端,還是會去執行那個TextBox的ontextchanged事件處理函式,就把其他的TextBox給清掉了!

所以把TextBox的ontextchanged事件處理函式移掉就OK了!

C#的處理函式是在aspx上,vb則在程式之中用Handles,所以建議如果Logic改到別的模組,原本的模式就不應該再留著它了,以避免不必要的問題發生。

以下有針對asp.net TextBox TextChanged的說明
Understanding the TextBox ASP.NET control
The TextChanged event
The most important event for the TextBox control is TextChanged. When a Web Form is submitted, and the data in the TextBox control has changed, the TextChanged event will be fired and processed on the server.
ASP.NET uses the ViewState to determine whether the data in the TextBox has changed from the last postback.
Note that the Web Form can be "submitted" either if the user has clicked any of the button-like web controls, or the AutoPostback property of the TextBox has been set to true, the content of the control has changed and the user has left the TextBox (the input focus shifted away from the control to another).

所以,PostBack到Server端,TextBox會用現在的值跟ViewState中的值比較,不同的話,就會引發TextChanged事件!

Hi, 

亂馬客Blog已移到了 「亂馬客​ : Re:從零開始的軟體開發生活

請大家繼續支持 ^_^