問題タブ [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.
.net - IEditableObject.EndEditをアトミックにするにはどうすればよいですか?
IEditableObjectを実装するAddressクラスがある場合、次のようなEndEdit実装がある可能性があります。
_cityに例外がある場合は、_line1、_line2、および場合によっては_cityを元に戻す必要があります。この問題はEndEditに限定されるものではなく、おそらく他の場所でも見られます。
.net - IEditableObject.EndEdit をアトミックにするにはどうすればよいですか?
IEditableObject を実装する Address オブジェクトがある場合、EndEdit の実装は次のようになります。
たとえば、 _stateの更新で例外が発生した場合は、5 つのプロパティすべてをリセットする必要があります。このアトミック アップデートの問題は、おそらく EndEdit に限定されたものではありません。
.net - 読み取り専用のDataGridViewおよびIEditableObject
こんばんは
.NETWindowsフォームプロジェクトのDataGridViewに少し問題があります。グリッドは読み取り専用であり、BindingList<T>
カスタムビジネスオブジェクトを含むソート可能オブジェクトにバインドされています。私のビジネスオブジェクトクラスはを実装しIEditableObject
ます。
これで、グリッド内を移動している間、メソッドBeginEdit
とメソッドが常に呼び出されます。EndEdit
グリッドまたはバインディングソースがこれを実行しないようにする方法はありますか?明示的に読み取り専用に設定されているため(ReadOnly = true)、これらのメソッドを何度も呼び出す理由はまったくありません(いいえ、何も表示されないことに注意してください)。
読んでくれてありがとう :)
マティアス
c# - エンティティをキャッシュするためのジェネリックメソッドの作成
インターフェイスを実装していてIEditableObject
、前にオブジェクトのクローンを作成する方法を知っているジェネリックメソッドを作成したいと思いますBeginEdit()
。
すべてのパブリックプロパティを繰り返し、それらをキャッシュされたオブジェクトにコピーするためのリフレクションについて考えました。
誰かもっと良いアイデアがありますか?
wpf - WPF:バインディングソースが更新されたときにBeginEdit(IEditableObject)を自動的に呼び出すことは可能ですか?
IEditableObjectを実装するクラスがありますが、バインディングのソースが更新されたときにBeginEdit()を自動的に呼び出すことができるかどうか疑問に思っていますか?
考えられるシナリオは2つあります。
- オブジェクトはデータベースを介して入力されます。この場合、BeginEdit()を呼び出したくありません。
- オブジェクトは、ユーザーが入力フィールドを介して入力します。この場合、ソースが更新されたときに自動的にBeginEdit()を呼び出したいと思います(双方向バインディングとINotifyPropertyChangedを使用します)。
プロパティが変更されたときにBeginEdit()を呼び出すことを検討していましたが、データベースからの入力時にBeginEdit()が呼び出されたくないため、最初のシナリオではうまくいきません。
wpf - WPF:DataGridがIEditableObject.BeginEdit / EndEditを呼び出すが、IEditableObject.CancelEditを呼び出さない原因は何ですか?
グリッドの編集を開始すると、IEditableObject.BeginEdit。そして、私が去ると、IEditableObject.EndEditが呼び出されます。ただし、を押すとEscape
、IEditableObject.CancelEditが呼び出されません。
これは以前は機能していたので、それを壊すために何をしたのかわかりません。またはそれを壊すことができるものさえ。
c# - IEditableCollectionView によって追加されるオブジェクトの種類は何ですか?
IEditableCollectionView addNew() メソッドを使用してオブジェクトを追加するのはかなりまともです。ただし、私が持っている汎用コードでどれだけうまく機能するかはわかりません。
基本クラスの ObservableCollection があります。ユーザーが見たいものに応じて、DerivedA または DerivedB (または複数の他の派生型クラス) で埋めることができます。1 つ以上のタイプを持つことはありません。これについて次の質問があります。番号 1 が主な質問です。
1) addNew() メソッドが呼び出されたときに追加されるオブジェクトのタイプ。私はベースを推測していますが、確かではありません。Base が抽象の場合はどうなりますか? とにかく、特定のタイプを追加することを確認できますか、それとも最も関連性の高いタイプをすでに追加するように実装されていますか?
2) 派生クラスを使用するときに ObservableCollection を使用する際に問題が発生することを求めていますか?
3) 派生クラスはすべて IEditableObject を個別に実装しますが、Base は実装しません。実装するときにメソッドを定義する必要があると思ったので、私の愚かさのせいです。それらを抽象として定義し、派生クラスでそれらをオーバーライドできますか? これを行わないと、IEditableCollection で問題が発生します。
アップデート:
項目 3 を正常に修正しました) 基本クラスは iEditableObject を実装し、抽象仮想メソッドをその派生クラスにスローします。リストが派生アイテムで満たされていても、addNew メソッドは機能しません。
私は1つの半解決策を見てきました。.Net Framework 4.0 は、追加する項目を定義できる AddNewItem という新しいメソッドを実装しています。パラメーターのないコンストラクターと基本クラスの問題を解決する必要があります。しかし、私は3.5で働いています
私にできることはありますか?
wpf - MVVM の IEditableObject
IEditableObject
MVVM ベースの WPF アプリケーションでまだ役立つシナリオを考えられますか? もしそうなら、これを示す例がありますか。
wpf - WPF DataGridは、IEditableObjectでBeginEditを2回呼び出しますか?
IEditableObject のコレクションにバインドされた DataGrid があります。
セルを 2 回クリックすると、編集用に開かれます。
面白いことに、BeginEdit は 2 回呼び出されます。同じ EditableObject の場合もあれば、2 つの異なるオブジェクトの場合もあります (特に、DataGrid の最後に到達するまで PgDn を使用する場合) 正しいオブジェクトが最初に呼び出され、次にコレクションから別のアイテムが呼び出されます。 .
EndEdit も 2 回呼び出されますが、間違ったアイテムではなく、常に選択されたアイテムに対して呼び出されます。
これは既知の問題ですか? (正しい) 1 つの通知のみを取得するための回避策。
c# - CurrencyManagerがバインドされたオブジェクトに対してBeginEdit()/ EndEdit()メソッドを呼び出さないようにする方法
複数のテキストボックスと1つのデータグリッドを含むフォームがあります。1つの事業体をこのフォームにバインドできます。たとえば、BOは次のようになります。
したがって、フォームでは、FirstNameとLastNameはテキストボックスにバインドされ、Relativesはグリッドにバインドされます。また、フォームには[保存]ボタンと[キャンセル]ボタンがあります。[保存]ボタンをクリックするとIEditableObject.EndEdit()が呼び出され、[キャンセル]ボタンをクリックするとIEditableObject.CancelEdit()が呼び出されます。CancelEdit()メソッドで、グリッドにバインドされている親戚の変更を含め、ユーザーが行ったすべての変更を拒否したい。ここまでは順調ですね..
ただし、グリッドコントロールはCurrencyManagerを使用します(グリッドは実際にはDevexpressコントロールですが、WinFormsコントロールも使用していると思うので問題ありません)。また、CurrencyManagerは、ユーザーが行を変更するたびに、Relativesコレクション内のアイテムに対してBeginEdit()とEndEdit()を呼び出します。したがって、[キャンセル()]ボタンをクリックすると、FirstNameとLastNameの変更のみがキャンセルされます。これは、Relativesコレクションの子オブジェクトのEndEdit()が、グリッドの基になるCurrencyMangerによってすでに呼び出されているためです。では、質問-1回の呼び出しですべての変更を拒否できるようにCurrencyManagerがそのメソッドを呼び出さないようにするにはどうすればよいですか?
ありがとう!