日期:2014-05-18  浏览次数:20422 次

关于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!