【问题标题】:CancelEdit on bindingsource doesn't cancel all edited fields of an objectbindingsource 上的 CancelEdit 不会取消对象的所有已编辑字段
【发布时间】:2013-01-18 04:46:01
【问题描述】:

我有一个bindingList<T>,绑定列表的每个对象都实现INotifyPropertyChanged, 在我的 WinForm 中,我使用了一个 BindingSource 并将它的数据源设置为 BindingList<T> 然后将一些文本框绑定到 BindingList 中每个项目的属性(我将此 winform 用于 CRUD 操作):

tbName.DataBindings.Add("Text", myBindingSource, "Name", true);
tbFamily.DataBindings.Add("Text", myBindingSource, "Family", true);

我还有一个用于取消编辑的按钮。但是当我正在编辑一条记录并单击取消按钮时,只有最后一次编辑的字段取消,我想取消整行并将所有值恢复为编辑前的值,我该怎么做?

【问题讨论】:

    标签: c# data-binding inotifypropertychanged bindingsource bindinglist


    【解决方案1】:

    要取消对BindingSources Current 对象所做的编辑,BindingSource 中包含的类型需要实现IEditableObject Interface

    【讨论】:

      【解决方案2】:

      我有同样的问题没有任何答案。 简单的方法是在按下取消按钮时重新加载 bindingSource。

      【讨论】:

        【解决方案3】:

        你不能通过 BindingSource.CancelEdit 来做到这一点。相反,您可以在编辑模式下取消绑定您的单个绑定控件,例如 TextBoxes,然后如果用户决定取消新输入的值,再次将它们绑定到绑定源。否则,如果一切顺利并且用户决定保存它们,请将 BindingList 上的旧值替换为新值并保留它们。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-03-26
          • 2023-01-21
          • 1970-01-01
          • 2019-03-11
          • 1970-01-01
          • 2011-02-24
          • 2020-11-26
          相关资源
          最近更新 更多