代码如下:代码1:
this.dataSet11.book[0].Delete();
this.dataSet11.book.AcceptChanges();
this.sqlDataAdapter1.Update(this.dataSet11);代码2:
this.dataSet11.book.Rows.RemoveAt(0);
this.sqlDataAdapter1.Update(this.dataSet11);每执行一次删除代码,要删除的行就会出现在尾行,不能在数据库中真正删除
this.dataSet11.book[0].Delete();
this.dataSet11.book.AcceptChanges();
this.sqlDataAdapter1.Update(this.dataSet11);代码2:
this.dataSet11.book.Rows.RemoveAt(0);
this.sqlDataAdapter1.Update(this.dataSet11);每执行一次删除代码,要删除的行就会出现在尾行,不能在数据库中真正删除
if (bm.Count <= 0 || bm.Position == -1) return;
DataRow dr = ((DataRowView)bm.Current).Row;
dr.Delete(); this.sqlDataAdapter1.Update(this.dataSet11);我是这样删除datagrid 选中行的数据的
this.dataSet11.book.AcceptChanges();
this.sqlDataAdapter1.Update(this.dataSet11);
修改成
this.dataSet11.book[0].Delete();
this.sqlDataAdapter1.Update(this.dataSet11);
this.dataSet11.book.AcceptChanges();代码2肯定更新不了,因为通过RemoveAt或Remove方法后,
被移除行不是做行状态为DataRowState.Deleted,
而是直接删除,所以进行批更新不会成功,
具体看,
http://blog.csdn.net/zhzuo/archive/2004/08/06/67037.aspx
而update()只删除rowstate为deleted的行,更新到数据源
this.dataSet11.book[0].Delete();是用来改变行状态的
AcceptChanges()是对更新操作的确认
update()只删除rowstate为deleted的行,更新到数据源this.dataSet11.book[0].Delete();是用来改变行状态的为deleted
AcceptChanges()是对内存中dataset进行更新,使其状态为unchanged