1. 程式人生 > >TextBox屬性設為Readonly時,.net後端程式無法取值的問題解決

TextBox屬性設為Readonly時,.net後端程式無法取值的問題解決

另外有很多人也遇到這樣的類似的問題:在一個很多TextBox的頁面上,控制元件裡一開始就有值,這些值是用datareader讀出來為每個控制元件賦值,然而在我要更新資料庫的時候,用.Text來取TextBox控制元件裡面的值,卻取不到。難道是隻讀的?不管怎樣最後有一個方法,用Request.Form來取值就可以取到了。

順便還有一點知識:

.NET 2.0 中TextBox只讀時在客戶端賦值後的取值問題

在.NET 2.0 下,當頁面上的某個TextBox設定了屬性ReadOnly="True"時,通過客戶端指令碼給其賦值後,在後臺程式碼中訪問其Text屬性卻無法獲得該值。

經過嘗試,發現可以通過如下的方式解決這個問題:

1、不設定ReadOnly屬性,通過onfocus="this.blur()"來模擬,如下:

<asp:TextBox ID="TextBox1" runat="server"onfocus="this.blur()"></asp:TextBox>
在此情況下,當文字框獲得焦點時便立刻失去,所以也無法手動修改其內容,能夠模擬ReadOnly,在後臺程式碼中也能通過Text屬性,正常獲取通過指令碼在客戶端設定的值;

2、設定了ReadOnly屬性後,通過Request來取值,如下:

前臺程式碼:

<asp:TextBox ID="TextBox1" runat="server"ReadOnly="True"></asp:TextBox>
後臺程式碼:

string Text = Request.Form["TextBox1"].Trim();
3、在Page_Load()中設定文字框的只讀屬性,能正常讀取,如下:

protected void Page_Load(object sender, EventArgs e)
 
{
 
if (!Page.IsPostBack)
 
...{
 
TextBox1.Attributes.Add("readonly","true");
 
}
 
}