2013-04-23 31 views
0

我絕對困惑。 我嘗試更改文本框的默認文本。c#asp文本框文本只在TextBox爲只讀時從代碼後面改變

這裏有一個簡單的代碼來重現問題。

TextBox Textbox1和標籤在任何點擊按鈕時都會更新。 Textbox var將永遠不會更新。只在第一頁PageLoad。

問題是,我必須從代​​碼後面添加我的文本框,而不是在aspx頁面中。

任何想法發生了什麼以及如何讓它工作?

%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="tbtester.WebForm1" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div > 

     <asp:Panel ID="mypanel" runat="server"> 
      <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
      <asp:Button ID="Button1" runat="server" Text="Button" /> 
      </asp:Panel> 
    </div> 
    </form> 
</body> 
</html> 

using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

    namespace tbtester 
    { 
     public partial class WebForm1 : System.Web.UI.Page 
     { 
      protected void Page_Load(object sender, EventArgs e) 
      { 
       System.Web.UI.WebControls.TextBox var = new System.Web.UI.WebControls.TextBox(); 
       //if (!this.Page.IsPostBack) 
       Label test = new Label(); 

       mypanel.Controls.Add(test); 
       mypanel.Controls.Add(var); 

       var.Text = DateTime.Now.ToLongTimeString(); 
       test.Text = DateTime.Now.ToLongTimeString(); 

       var.ReadOnly = false; 

       TextBox1.Text = DateTime.Now.ToLongTimeString(); 



      } 
     } 
    } 

回答

0

禁用其read only標誌before將它添加到您的panel

 TextBox var = new TextBox(); 
    var.ReadOnly = false; 
    mypanel.Controls.Add(var); 
+0

只讀默認情況下禁用。該線只用於調試。當啓用只讀時,文本框將會更新,但用戶無法在其瀏覽器中更改該值。它有點瘋狂。 – user2310654 2013-04-23 14:07:04