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中添加多条记录且未更改的数据库之前时,不小心点击到了删除按钮,这时虽用提交和回滚执行亦无法解决。