2010-10-31 22 views
1

我有一個帶有文本框和按鈕的數據列表的asp.net頁面,在頁面加載文本框中獲取文本,如果我更改文本並按下按鈕的文本不會更新。文本框的值沒有得到更新

我在做什麼錯?

{ 
protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     DataTable table = CategoryAccess.GetProducts(); 

     ProductList.DataSource = table; 
     ProductList.DataBind(); 
    } 
} 

protected void btn_Click(object sender, EventArgs e) 
{ 
    string Name = textbox.Text; 

    CategoryAccess.UpdateProducts(Name); 
} 
} 
+0

是否有附加的代碼在這裏丟失。你是否明確設置了文本框的文本。如果是這樣,這將消除您到達btn_Click事件時的更改。 – brumScouse 2010-10-31 13:58:52

+0

我有點迷失在這裏,你能展示.aspx代碼,以及categoryaccess鏈接到哪裏?一個SQL表或什麼? – xandy 2010-10-31 13:59:47

+0

我使代碼變得簡單易見,它必須在這裏是問題所在,SQL沒有問題。 – Nicklas 2010-10-31 14:10:24

回答

0

嘗試添加EnableViewState財產在你的TextBox控件和值設置爲true

例如

<asp:TextBox ID="textBox1" 
      EnableViewState="true" 
      MaxLength="25" 
      runat="server"/> 

,或者您可以通過編程做:

protected void Page_Load(object sender, EventArgs e) 
{ 
    textBox1.EnableViewState = true; 
} 
+1

如果我改變了,會造成不良影響:textbox.text =「hello」; string Name = textbox.Text;該值會更新爲hello。這就像文本框注意到文本正在改變。 – Nicklas 2010-10-31 14:48:06

0

您需要再次兵新的數據...

protected void btn_Click(object sender, EventArgs e) 
{ 
    string Name = textbox.Text; 

    // you update with the new parametre 
    CategoryAccess.UpdateProducts(Name); 

    // you get the new data 
    DataTable table = CategoryAccess.GetProducts(); 

    // and show it 
    ProductList.DataSource = table; 
    ProductList.DataBind(); 
} 
+0

仍然一樣,即使我在頁面上顯示新值,數據庫值仍然是相同的。我沒有提到我不能看到數據列表中的文本框,因爲它在數據列表中,所以我用它來獲取文本框的值:foreach(DataListItem di在ProductList.Items中) { textbox.Text =(((TextBox)( di.FindControl( 「文本」)))文本)。 } – Nicklas 2010-11-01 18:07:37

1

我有同樣的問題。我發現我把textbox.text = "xxx"放在Page_Load()之內,但在if(!ispostback)之外。