开发过程中使用到了DataAdapter进行记录集绑定和数据处理,但是使用过程中发现存在DataAdapter的UpDate()方法有无法更新数据集的情况。经过测试发现,DataAdapter的UpData(DataTable)方法在提交时会找DataTabel中有所改变的数据进行提交,当进行数据修改时虽然DataTable中的数据也修改了,但DataTable中的标记没有改变,也就是当调用DataAdapter的UpData(DataTable)的方法时,不认为DataTable中有需要更改的数据,当你提交后,数据库中的数据就不更新改变。DataTable中的数据经过代码调试结果是肯定改变的,为什么标记没改呢?DataTable中的数据修改后,这条记录什么时候会改变呢?经测试发现,只要把编辑的焦点移离本行的数据就会触发修改本行的更改标记,这个标记可以通过调用属性RowState来看,看看本行是什么状态,如果处于没有修改的状态,那么就是Unchanged。提交数据修改时候,通过先移动行的焦点,再调用DataAdapter的UpData(DataTable)方法的方法来修改。
下面是优化的,虽然简单但是效果明显,能够完成更新。