1

標準の CreateNewEntity 画面があります。エンティティには、他のタイプのエンティティのリストを含めることができます。デフォルトでは、ユーザーが別のエンティティをコレクションに追加したい場合にモーダル ウィンドウを開く追加ボタンがあります。ただし、デフォルトのモーダル ウィンドウには必要な機能の一部が欠けていたため、少し調査しました。デフォルトのモーダル画面は変更できないことがわかりました。そこで、素敵なカスタム モーダル ウィンドウヘルパー クラスを見つけました。問題は、必要なロジックを適用するためにモーダル ウィンドウ フィールドにアクセスできないように見えることです。関連する 2 つのドロップダウン リストがあります。1 つを変更すると、他のドロップダウン リスト オプションが制限されます。私はこの特定の部分で立ち往生しています:

var proxy = this.FindControl("DodavanjeParcele");

        proxy.ControlAvailable += (s, e) =>
        {
            var ctrl = e.Control as System.Windows.Controls.Control;
            //how to obtain access to ctrl fields?
        };

「DodavanjeParcele」はカスタムモーダルウィンドウです。この前に、モーダル ウィンドウがインスタンス化され、初期化されます。ボタンをクリックするとポップアップし、期待どおりに機能します。欠けているのは上記のルールだけです。ルールを定義するために、モーダル ウィンドウ フィールドの変更イベント ハンドラーを設定する必要があります。上記のように、IProxy を標準の Windows コントロールとしてキャストしようとしました。ここで行き詰まりました。コントロール フィールドにアクセスしてイベント ハンドラを設定する方法が見つからないようです。何かご意見は?

4

1 に答える 1

0

私があなたを正しく理解していれば、なぜコントロールを検索したり何かをキャストしたりする必要があるのか​​ わかりません。

Control1オートコンプリート ボックス (ドロップダウン リスト) を作成するエンティティです。その選択は、Control1_Changedメソッドのローカル プロパティにコピーされます。そのプロパティは、作成するフィルタ クエリのパラメータとして使用されますControl2

コントロール1 コントロール2

C#:

private void Control1_Changed()
{
    this.MyLocalProperty = this.Control1.SelectedItem;
}

VB.NET:

Private Sub Control1_Changed()
    Me.MyLocalProperty = Me.Control1.SelectedItem
End Sub

のプロパティで [クエリの自動実行] がチェックされていることを確認してください。クエリ パラメータが変更されるControl2と、2 番目のコントロールが更新され、フィルタリングされます。Control1

自動実行

私のスクリーン ショットのコードはすべて、Yann の Modal Helper 内で実行されるため、特別な操作は必要ありません。

于 2014-04-22T13:11:02.280 に答える