-1

かなり複雑なフォームを作り直しています。このフォームには複数のサブフォームがあります。元の化身は、これらの非表示のパネルなどをすべて作成することでした (私のデザインではなく、修正しようとしているものではありません)。

最終的には、編集モードが典型的なフォームで構成され、それに1つのサブフォームがあるFormViewです。これで、サブフォームのインデックスを適切なインデックスに変更し、編集モードに変更するコールバック編集メソッドに関連付けられた、ReadOnly モードのときにサブフォームに GridView が表示されます。これらのデータはすべて SqlDataObjects を介して取得されます。

プロセスを簡素化するために、サブフォームをユーザー コントロールに配置し、メイン フォームの編集部分と読み取り専用部分の両方にユーザー コントロールを含めました。したがって、メイン フォームが ReadOnly の場合、ユーザー コントロールがデフォルト モードの ReadOnly で表示され、グリッドが表示されます。この部分はうまく機能します。

ユーザーがメイン フォームを編集モードで開くと、サブフォームは期待どおりにグリッド モードで表示されます (そして、[編集] ボタンを含むグリッド内の列が表示されます)。これもうまくいきます。

編集ボタンをクリックしてフォームを編集モードに変更すると、すべてが期待どおりに機能します。メインフォームからサブフォームへのフロー (デバッグ経由) が期待どおりに進んでいることがわかります。

CommandName が設定された単純な LinkBut​​ton である更新ボタンをクリックすると (動作する他のフォーム ビューと同じように)、コールバックがサブフォームに移動することに気付きます (メインフォームのデータバインディングをスキップします。これも期待) しかし、更新呼び出しは SqlDataObject にレンダリングされません。

デバッグの目的だけで、SqlDataObjects ごとに OnUpdating/OnInserting/OnSelecting がありますが、ヒットすることはありません。ユーザーコントロールは、ポストバック後に読み取り専用モードに直接移行します。これは DataBinding の問題ではないと思います。

ネストされたフォームコントロールでこれを見た人はいますか? 具体的には、FormView にネストされた FormView を収容するユーザー コントロールですか?

UserControl 全体を削除してサブフォームをメインフォーム内に直接配置することはできませんが、機能するまで遊んでみるという適切な解決策を知りたいです...

4

1 に答える 1

0

ネストされたフォームビューからのコールバックを処理するには、テンプレートの一部であっても、動的コントロールのように扱う必要があるようです。子フォームが強制的に編集モードになると(デフォルトに設定することにより)、期待どおりにポストバックが処理されます。デフォルト設定のままにすると、期待どおりにポストバックを処理できません。

いくつかのサンプルコードを提示したいと思います。おそらく後で提示します(これが、投稿から1分以内に-1を取得したと想定している理由です)が、ネストされたものに関する機能サンプルはどこにもないようです。フォーム(とにかく機能するサンプル)。

簡単な修正は、2番目のフォームを最初のフォームの範囲外に配置し(ただし、同じユーザーコントロール内に)、変更を検出するために2つのコールバックを実行することでした。

そうは言っても、フォーム内にフォームがある場合、およびそれらのb

于 2013-02-04T17:47:30.883 に答える