DataGridView的编辑撤销与数据表回滚的表现

来源:互联网 发布:淘宝怎么查买家退货率 编辑:程序博客网 时间:2024/05/06 00:49

1.编辑撤销:当DataGridView单元格处于编辑状态时,取消当前对所有单元格进行的编辑修改。

        private void 撤销更改()        { if (DataGridView.Focused)DataGridView.CancelEdit(); }

2.数据表回滚的表现:当DataGridView与BindingNavigator结合使用时,当点击[删除]按钮后DataGridView中将立即消失选定这一行数据,显示的数据条数同时减少,这时,虽然绑定的数据表尚未提交更新到数据库,且数据表中数据条数也未曾减少,但不是采用重新绑定数据表的方式来恢复被删除的行在DataGridView的可见,而是,采用数据表回滚来实现取消删除的行在DataGridView中的立即可见。

if (System.Windows.Forms.MessageBox.Show("确认要删除该行数据并保存所有数据吗?", "删除确认", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.Cancel)    数据表.Tables["总列表"].RejectChanges();

3.数据表更改的有效提交:非新增操作有效性,如果在之上的数据表回滚代码前加入代码AcceptChanges()如下:

if (System.Windows.Forms.MessageBox.Show("确认要删除该行数据并保存所有数据吗?", "删除确认", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.Cancel){    数据表.Tables["总列表"].AcceptChanges();    数据表.Tables["总列表"].RejectChanges();}

这时如果删除一行数据,则回滚无效,而提交数据表更改是有效的。那么,提交数据表更改何时无效?假如在数据表中新增一行数据后又立即删除这行新增数据,这时无论执行以上代码或是单独运行回滚代码,回滚皆无效的,那么,提交数据表更改就是无效的。

提交更改有效性这点说明至少目前是这样认为的,在DataGridView中添加多条记录且未更改的数据库之前时,不小心点击到了删除按钮,这时虽用提交和回滚执行亦无法解决。