关于datagrid的DataGrid1_UpdateCommand问题
DataGrid1_UpdateCommand中的代码是:
cmd.Parameters[ "@productId "].Value = ((TextBox)e.Item.Cells[0].Controls[0]).Text;
cmd.Parameters[ "@prodauctName "].Value = ((TextBox)e.Item.Cells[1].Controls[0]).Text;
cmd.Parameters[ "@oldprice "].Value = ((TextBox)e.Item.Cells[2].Controls[0]).Text;
cmd.Parameters[ "@newprice "].Value = ((TextBox)e.Item.Cells[3].Controls[0]).Text;
cmd.Parameters[ "@quantity "].Value = ((TextBox)e.Item.Cells[4].Controls[0]).Text;
cmd.Parameters[ "@newold "].Value = ((TextBox)e.Item.Cells[5].Controls[0]).Text;
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
DataGrid1.EditItemIndex = -1;
this.DataBind();
修改数据后不保存,还是原来的值,是变量付值有错误吗?
错在哪里?应该怎么改?请大家帮帮忙!谢谢!
[解决办法]
从理论上来说,你去做更新的时候应该有一项是通过原有的主键更新的,一般是
DataGrid1.DataKeys[e.Item.ItemIndex].ToString() 但我没见到这样的代码
[解决办法]
你更新到数据库是要根据主键的。也就是dagakeyfieds
我也没看过你这样有代码呀
在绑定数据的时候,要将主键的值存进去,更新的时候,根据它来更新
[解决办法]
1.
检查 cmd.ExecuteNonQuery(); 的返回值, 如
int affectedCount = cmd.ExecuteNonQuery(); //
//Response.Write(affectedCount); // affectedCount 此操作影响的行数,如果 > 0 表示更新成功了,
2.
确保的你Datagrid绑定放在 !IsPostBack 内部,如
if(!IsPostBack) {
DataGrid1.DataSource = GetMyDataSource();
DataGrid1.DataBind();
}
Good Luck!