我使用以下代码更新数据网格中的数据。
但是当我点击更新时,数值在数据库中更新,但它仍然在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();
}
答案 0 :(得分:2)
我认为您需要再次调用您的加载机制 - 因为您的网格的数据源未更新,因此它将保留您上次选择的旧数据。 如果再次加载数据时出现性能问题,则可以手动更改已编辑行的数据。
答案 1 :(得分:2)
快速修复:
您可以尝试将此行移至Page_Load()
MySQLDataGrid2.DataBind();
或者,在执行更新命令后,通过以下方式“刷新”页面:
Response.Redirect(Request.RawUrl);
答案 2 :(得分:1)
成功编辑后。
尝试调用您的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();
}
希望得到这个帮助。
此致