2011-10-21 67 views
4

我想從GridView中的TextBox中獲取Text屬性。這個TextBox有一些來自我的數據庫的數據。當我更改這些數據時,我想在我的數據庫中進行更新。GridView中的TextBox

但是,當我搜索我的文本框的文本時,他從我的數據庫中獲取舊值,而不是現在放置的值。

我該怎麼做才能獲得我在TextBox中寫入的實際數據,而不是來自我的數據庫?

protected void VerifyPriority() 
{ 
    for (int i = 0; i < GridView1.Rows.Count; i++) 
    { 
     GridViewRow RowView = (GridViewRow)GridView1.Rows[i]; 
     TextBox txt = (TextBox)GridView1.Rows[i].FindControl("txtPriority"); 

     if (txt != null) 
     { 
      if (txt.Text != this.changes[i]) 
      { 
       this.UpdatePriority(this.codigo[i], txt.Text); 
      } 
     } 
    } 
} 
+0

這可能是因爲您在錯誤的位置執行此方法。你從哪個事件中調用這個事件? – Birey

+0

我有一個名爲「保存更改」的按鈕。在OnClick事件 –

+0

中,所以詹姆斯說,你有回發檢查嗎?我認爲你在回發時重新綁定數據庫的值,這應該是非常簡單的。 – Birey

回答

5

更可能你是你每次回發後重新綁定GridView的,而不是一次結合,並讓ViewState的持久化數據。如果每次將頁面重新發布時綁定GridView,則所做的任何更改都將被清除,並替換爲數據庫中的信息。

做你唯一的(在這種情況下)的第一頁負載結合:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     GridView1.DataSource = GetSomeData(); 
     GridView1.DataBind(); 
    } 
} 

把上面的代碼到位後,你應該能夠從文本框得到正確的數據:

foreach (GridViewRow row in GridView1.Rows) 
{ 
    TextBox txt = row.FindControl("TextBox1") as TextBox; 
    if (txt != null) 
    { 
     string value = txt.Text; 
    } 
} 
+0

我忘記了IsPostBack。謝謝! –

+0

沒問題。真高興你做到了。 –

相關問題