2011-03-24 88 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