DataBinding.EndEdit()之后如果保存不成功,要撤销怎么办?

liohoym 2011-11-30 11:59:01
我有一个Form(WinForm),上面有两个TextBox,两个按钮,分别是<保存>,<撤销>

WinForm的一个Form中有这样的代码:


BindingSource MyBindingSource = new BindingSource();
MyBindingSource.DataSource = MyDataSet.Tables["Table1"].DefaultDataView;

//数据绑定
TextBox1.DataBinding.Add("Text",MyBindingSource,"Field1");
TextBox2.DataBinding.Add("Text",MyBindingSource,"Field2");


上面代码中的MyDataSet中的Table1是通过SqlDataAdapter得来的,
并且这个Adapter是配置了UpdateCommand,InsertCommand,UpdateCommand的。

现在对这个数据进行编辑,编辑之后按<保存>按钮,直接使用DataAdapter.Update()时,数据保存不到数据源中去(Sql数据库)。

必须在DataAdapter.Update()之前加一句:MyBindingSource.EndEdit(),这样是可以保存到数据源中的。

问题是,如果保存不成功,比如因为某种原因出错了。我想撤销时撤销到按下<保存>铵钮之前的状态去,即本次编辑所有的修改都要保留,因为使用者可能会在本次编辑的基础上再进行更改,而不是直接回到自上次保存成功之后的数据。只有用户按下<撤销>按钮时才放弃所有更改。

有什么办法可以解决这个问题吗?是不是我的思路有问题?

请高手指点一下。
...全文
95 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿非 2011-12-01
  • 打赏
  • 举报
回复
你可以保留数据源的副本

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧