2011-03-24 63 views
1

我正在使用以下代碼更新我的數據網格中的數據。DataGrid值在編輯/更新功能後不會更新

但是,當我點擊更新數據庫中的值更新,但它仍然顯示數據網格中的舊值。

如果在此之後刷新頁面,則datagrid會顯示更新的值。

什麼可能是錯的?

代碼在更新命令:

protected void MySQLDataGrid2_UpdateCommand(object source, DataGridCommandEventArgs e) 
{ 
     string newData; 

     TextBox aTextBox; 
     aTextBox = (TextBox)(e.Item.Cells[0].Controls[0]); 
     newData = aTextBox.Text; 

     decimal comm = Convert.ToDecimal(newData); 

     string UpdateHiveCommission = "Update tbl_HiveCommission set Commission = '" + Convert.ToDecimal(newData) + "'"; 
     MySqlConnection objMyCon3 = new MySqlConnection(strProvider); 
     objMyCon3.Open(); 
     MySqlCommand cmd3 = new MySqlCommand(UpdateHiveCommission, objMyCon3); 
     cmd3.ExecuteNonQuery(); 
     objMyCon3.Close(); 

     MySQLDataGrid2.EditItemIndex = -1; 
     MySQLDataGrid2.DataBind(); 
} 

回答

2

我認爲你需要再次打電話給你的加載機制 - 因爲網格的數據源未更新,因此它會從你的最後一個選擇保存舊數據。 如果您遇到性能問題再次加載數據,您可以手動更改編輯行的數據。

+0

如何手動更改已編輯行的數據?你能舉一個小例子說明如何做到這一點嗎? – 2011-03-24 09:00:03

+0

只是不要調用數據綁定 - 這會導致您當前輸入的數據被替換爲數據源中的數據。 – Gambrinus 2011-03-24 09:02:01

+0

你可以 - 在數據綁定剛剛寫入aTextBox.Text = newData; – Gambrinus 2011-03-24 09:03:33

2

快速修復:

Response.Redirect(Request.RawUrl);
+0

好的,但是當頁面首次加載時會發生什麼?它會試圖綁定什麼? – 2011-03-24 09:01:32

+0

這沒有奏效。事實上,當我點擊編輯時,我的整個數據網格變空了。 – 2011-03-24 09:04:28

+0

當第一次加載頁面時,你的DataGrid應該綁定到我想的東西上。 – Rollor 2011-03-24 09:05:46

1

你可以嘗試這條線移動到的Page_Load()

MySQLDataGrid2.DataBind();

或者,執行更新命令後,通過 「刷新」 的頁面

成功編輯後。

嘗試調用您的Databind方法。

類似:

private void BindMEthod() 
{ 

//Your code in binding data to your datagridview. 

} 

     protected void MySQLDataGrid2_UpdateCommand(object source, DataGridCommandEventArgs e) {  
     string newData; 
      TextBox aTextBox; 
     aTextBox = (TextBox)(e.Item.Cells[0].Controls[0]);  
     newData = aTextBox.Text;  
    decimal comm = Convert.ToDecimal(newData); 
      string UpdateHiveCommission = "Update tbl_HiveCommission set Commission = '" + Convert.ToDecimal(newData) + "'";  
     MySqlConnection objMyCon3 = new MySqlConnection(strProvider); 
     objMyCon3.Open();  
     MySqlCommand cmd3 = new MySqlCommand(UpdateHiveCommission, objMyCon3); 
     cmd3.ExecuteNonQuery();  
     objMyCon3.Close();  
     // MySQLDataGrid2.EditItemIndex = -1;  -- 
    // MySQLDataGrid2.DataBind(); 

     //Replace with this 

    BindMEthod(); 

    } 

希望這有助於。

Regards

+0

謝謝:)但可能你沒有注意到我已經接受了這個問題的答案。反正謝謝你的幫助:) – 2011-03-24 09:34:50

+0

:)是啊,我還以爲你沒有任何答案呢..但仍然歡迎你。 – Crimsonland 2011-03-24 09:48:03