请问,在一个窗体中有几个textbox,这些textbox绑定了数据源
textbox1.databindings.add("text",dataset.tables!表名,"字段名")
textbox2......................................................
...........................
而我假设在添加一条新记录时,发现已有相同的记录,或在修改时,想取消这次操作,但用dataset.jectchanges没用,或重新绑定数据源(记下操作新增前,或修改前的记录号,重新绑定数据源后再找回这条记录。这样好像很烦,不知有没人这样做)都试了一下,不知是错误操作还是怎么样都不行。应点样才能做到还原回修改或新增前的状态。textbox的值显示在修改或新增前的值。
还有在保存时,我用currencymanager对dataset数据集新增修改或删除后,是不是一定要用Sql 语句的:update,insert,delete来保存到数据库啊,不知还有没有其它办法更新数据库的。那么dataset.acceptchange有什么用。
使用Transaction
关于dataset.acceptchange,是这样的,DataSet实际上是数据库在内存中的Copy,每个Row都有状态,dataset.acceptchange执行后,会将DataSet中的所有Row的状态改成Unchanged,Deleted 行被移除。
而DataTable.RejectChanges 方法被调用时,仍处于编辑模式的任何行将取消其编辑。新行被移除。已修改的和已删除的行返回到其原始状态 (DataRowState.Unchanged)。
这就是说,如果你对DataSet做了修改,调用dataset.acceptchange后,将无法回到DataSet的初始状态。