问题标签 [ieditableobject]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
315 浏览

.net - How do I make IEditableObject.EndEdit atomic?

If I have an Address class that implements IEditableObject, I might have EndEdit implementation like this:

If there is an exception on _city, then _line1, _line2, and possibly _city should revert. This problem isn't limited to EndEdit but probably found in other places as well.

0 投票
2 回答
1012 浏览

.net - 如何使 IEditableObject.EndEdit 成为原子的?

如果我有一个实现 IEditableObject 的 Address 对象,我可能会有这样的 EndEdit 实现:

例如,如果更新_state时出现异常,则应重置所有 5 个属性。这个原子更新问题可能不仅限于 EndEdit。

0 投票
1 回答
1090 浏览

.net - 只读 DataGridView 和 IEditableObject

晚上好

我在 .NET Windows Forms 项目中的 DataGridView 有一点问题。网格是只读的,并且绑定到BindingList<T>包含自定义业务对象的可排序对象。我的业务对象类确实实现了IEditableObject.

现在,在网格中导航时会一直调用BeginEditandEndEdit方法。有没有办法阻止网格或绑定源这样做?它被明确设置为只读(ReadOnly = true),因此根本没有理由(不,让我们小心地说我没有看到)一遍又一遍地调用这些方法。

感谢您阅读:)

马蒂亚斯

0 投票
1 回答
457 浏览

c# - 创建一个通用方法来缓存一个实体

我正在实现该IEditableObject接口,并且我想创建一个通用方法,该方法将知道如何在之前克隆对象BeginEdit()

我考虑过反射来迭代所有公共属性并将它们复制到缓存对象中。

有人有更好的主意吗?

0 投票
1 回答
1358 浏览

wpf - WPF:是否可以在更新绑定源时自动调用 BeginEdit (IEditableObject)?

我有一个实现 IEditableObject 的类,现在我想知道是否可以在更新绑定源时自动调用 BeginEdit() ?

有两种可能的情况:

  1. 对象通过数据库填充。在这种情况下,我不想调用 BeginEdit()。
  2. 对象通过用户的输入字段填充。在这种情况下,我想在更新源时自动调用 BeginEdit()(我使用双向绑定和 INotifyPropertyChanged)。

我正在考虑在属性更改时调用 BeginEdit() ,但这与第一种情况不符,因为我不希望在从数据库填充时调用 BeginEdit() 。

0 投票
1 回答
1333 浏览

wpf - WPF:什么可能导致 DataGrid 调用 IEditableObject.BeginEdit/EndEdit 但从不调用 IEditableObject.CancelEdit

当我开始编辑我的网格 IEditableObject.BeginEdit。如果我离开,则调用 IEditableObject.EndEdit。但是,如果我按下,Escape则不会调用 IEditableObject.CancelEdit。

这是以前工作的,所以我不确定我做了什么来破坏它。或者甚至是什么可以打破它。

0 投票
1 回答
793 浏览

c# - IEditableCollectionView 添加的对象类型是什么?

使用 IEditableCollectionView addNew() 方法添加对象相当不错。但是,我不确定它与我拥有的通用代码的效果如何。

我有一个基类的 ObservableCollection。根据用户想要看到的内容,可以用 DerivedA 或 DerivedB (或多个其他派生类型类)填充。它从来没有超过 1 种类型。我对此有以下问题,其中 1 号是主要问题。

1)调用addNew()方法的时候添加了什么类型的对象。我猜是基数,但不确定。如果 Base 是抽象的呢?无论如何我可以确保它添加了一个特定的类型,或者它是否已经实现了它已经添加了最相关的类型?

2) 在使用派生类时,我是否要求 ObservableCollection 遇到麻烦?

3)派生类都单独实现 IEditableObject 但 Base 没有。我的愚蠢是错误的,因为我认为当你实现时你必须定义方法。我可以将它们定义为抽象,然后在派生类中覆盖它们,对吗?如果我不这样做,我会遇到 IEditableCollection 的麻烦。

更新:

我成功地修复了第 3 项)基类实现 iEditableObject 并将抽象虚拟方法扔到它的派生类中。addNew 方法不起作用,即使列表中填充了派生项。

我见过一种半解决方案。.Net framework 4.0 实现了一个名为 AddNewItem 的新方法,您可以在其中定义要添加的项目。应该解决非无参数构造函数和基类的问题。但是我在 3.5 工作

有什么我能做的吗?

0 投票
3 回答
10136 浏览

wpf - MVVM 中的 IEditableObject

IEditableObject您能想到在基于 MVVM 的 WPF 应用程序中仍然有用的场景吗?如果是这样,你有一个例子来证明这一点。

0 投票
4 回答
6644 浏览

wpf - WPF DataGrid 在 IEditableObject 上调用 BeginEdit 两次?

我有一个绑定到 IEditableObject 集合的 DataGrid。

现在,当我在一个单元格中单击两次时,它将打开以进行编辑。

有趣的是:BeginEdit 会被调用两次。有时对于同一个 EditableObject,但有时对于两个不同的对象(尤其是当我使用 PgDn 直到我到达 DataGrid 的末尾时)会首先调用正确的对象,然后是集合中的其他一些项目,这些项目以前从未成为焦点.

EndEdit 也被调用了两次,但总是针对选定的项目,而不是错误的项目。

这是一个已知问题吗?仅获得(正确的)一个通知的任何解决方法。

0 投票
2 回答
1868 浏览

c# - 如何防止 CurrencyManager 为绑定对象调用 BeginEdit()/EndEdit() 方法

我有一个带有几个文本框和一个数据网格的表单。一个业务实体可以绑定到此表单。例如,BO 看起来像这样:

所以在表单上,​​FirstName 和 LastName 绑定到文本框,Relatives 绑定到网格。同样在表单上我有按钮保存和取消。单击保存按钮时,我调用 IEditableObject.EndEdit(),单击取消按钮时,我调用 IEditableObject.CancelEdit()。我希望 CancelEdit() 方法拒绝用户所做的所有更改,包括绑定到网格的亲属的更改。到现在为止还挺好..

但是网格控件使用 CurrencyManager(网格实际上是 Devexpress 控件,但没关系,因为我相信 WinForms 控件也使用它)。每次用户更改行时,CurrencyManager 都会为 Relatives 集合中的项目调用 BeginEdit() 和 EndEdit()。因此,当单击 Cancel() 按钮时,只会取消 FirstName 和 LastName 中的更改,因为对于 Relatives 集合中的子对象 EndEdit() 已经被网格的底层 CurrencyManger 调用!所以,问题 - 如何防止 CurrencyManager 调用这些方法,以便我可以通过一次调用拒绝所有更改?

谢谢!