gpt4 book ai didi

c# - 撤消自 BindingSource 的最后一次 EndEdit 调用以来的所有更改

转载 作者:太空狗 更新时间:2023-10-29 23:35:39 24 4
gpt4 key购买 nike

场景如下(使用绑定(bind)到 DataSet 中的 DataTable 的 BindingSource):

  1. 用户创建了一个新的地址簿联系人,填写First和Last数据绑定(bind)控件中的名称。
  2. 他按下应用,他的事件处理程序调用BindingSource.EndEdit()。
  3. 然后他意识到有一个错误,并添加一个电子邮件地址。
  4. 但是当他按下 Apply 时,验证失败(无效的电子邮件格式),因此不会调用 EndEdit()。
  5. 他决定不进行编辑,并且按下取消按钮,其事件处理程序调用BindingSource.CancelEdit()。
  6. 但是,与其回到新的接触只是第一次和姓氏,没有电子邮件,BindingSource 反而摆脱了整个记录。

有没有办法只撤销自上次调用 EndEdit() 以来的操作?我的印象是 CancelEdit() 应该是这样工作的。

最佳答案

作为解释,DataTable 仅保存 2 种状态的记录,即原始状态和当前状态。您的请求需要多个状态。

要实现您想要的效果,您应该将更改刷新到数据库(例如 Adapter.Update(table))以响应成功的应用。这会将您的 Current 提升为 Original,而下一个 Cancel 可以退回到原来的状态。

虽然这可能符合也可能不符合您的要求。

关于c# - 撤消自 BindingSource 的最后一次 EndEdit 调用以来的所有更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1224188/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com