2013-04-23 60 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