這篇要簡單介紹一下最常用的輸入項:TextBox。
TextBox的介紹:
1.MSDN官方網站說明:MSDN 文件庫 reference
2.常用屬性
(a)Text:文字方塊中的文字,內建ViewState記值,PostBack後會自動記住。
(b)MaxLength:限制使用者輸入的指定字元數。
(c)ReadOnly:唯讀,需注意某一種特別弔詭的唯讀情況,請參考黑暗執行緒的文章TextBox.ReadOnly、Attributes["readonly"]及Disabled ,以及另一篇MSDN forum 阿尼的研究
(d)TextMode:可改變Render出來的HTML tag。
(e)AutoPostBack:設定為true,會在HTML DOM的onchange事件,加上呼叫__doPostBack()的function,當一旦觸發onchange則postback,將form的資料submit回自己這一頁處理。
3.常用server端事件
OnTextChanged,當TextBox的值與上一次的值有所改變時,即會觸發此事件。
4.HTML tag,根據TextMode而有所不同
(a)SingleLine: <input type='text' />
(b)MultiLine: <textarea />
(c)Password: <input type='password' />
5.一般用途
最常用的輸入項
(a)搭配Validators進行Client端與Server端的驗證
(b)外觀:
Textbox的顯示寬度是由它的 Columns 屬性決定 (以字元為單位)。
TextBox 控制項是多行文字方塊,它所顯示的列數將由 Rows 屬性決定。
若要顯示在 TextBox 控制項內換行的文字,應將 Wrap 屬性設定為 true。
6.注意
(a)TextMode=MultiLine時,MaxLength會失效,因為textarea無法使用MaxLength來限制輸入字元數。解決方式請參考:http://www.dotblogs.com.tw/hatelove/archive/2010/07/06/textarea_maxlength.aspx
(b)AutoPostBack=false時,並不代表不會觸發server端的OnTextChanged事件,而是等到有任何回到server端處理時,只要值與上一次的值比較後有改變,就會觸發server端的對應事件 (這也是ViewState為何給兩次postback使用,以及event-driven model的基底)
最後,請想學習的客倌,看完這篇文章思考一下,下列的問題該如何回答:
1.TextBox對應的HTML tag有哪一些呢?是由哪一個屬性所控制呢?
2.TextBox的寬度,列數,可輸入字元數的屬性分別為何?
3.ReadOnly的注意事項
4.什麼時候會觸發server端的onTextChanged事件?
5.MaxLength在textarea失效,該如何解決?
6.為什麼TextBox的值PostBack後不用處理,值仍然存在?