かなり複雑なフォームを作り直しています。このフォームには複数のサブフォームがあります。元の化身は、これらの非表示のパネルなどをすべて作成することでした (私のデザインではなく、修正しようとしているものではありません)。
最終的には、編集モードが典型的なフォームで構成され、それに1つのサブフォームがあるFormViewです。これで、サブフォームのインデックスを適切なインデックスに変更し、編集モードに変更するコールバック編集メソッドに関連付けられた、ReadOnly モードのときにサブフォームに GridView が表示されます。これらのデータはすべて SqlDataObjects を介して取得されます。
プロセスを簡素化するために、サブフォームをユーザー コントロールに配置し、メイン フォームの編集部分と読み取り専用部分の両方にユーザー コントロールを含めました。したがって、メイン フォームが ReadOnly の場合、ユーザー コントロールがデフォルト モードの ReadOnly で表示され、グリッドが表示されます。この部分はうまく機能します。
ユーザーがメイン フォームを編集モードで開くと、サブフォームは期待どおりにグリッド モードで表示されます (そして、[編集] ボタンを含むグリッド内の列が表示されます)。これもうまくいきます。
編集ボタンをクリックしてフォームを編集モードに変更すると、すべてが期待どおりに機能します。メインフォームからサブフォームへのフロー (デバッグ経由) が期待どおりに進んでいることがわかります。
CommandName が設定された単純な LinkButton である更新ボタンをクリックすると (動作する他のフォーム ビューと同じように)、コールバックがサブフォームに移動することに気付きます (メインフォームのデータバインディングをスキップします。これも期待) しかし、更新呼び出しは SqlDataObject にレンダリングされません。
デバッグの目的だけで、SqlDataObjects ごとに OnUpdating/OnInserting/OnSelecting がありますが、ヒットすることはありません。ユーザーコントロールは、ポストバック後に読み取り専用モードに直接移行します。これは DataBinding の問題ではないと思います。
ネストされたフォームコントロールでこれを見た人はいますか? 具体的には、FormView にネストされた FormView を収容するユーザー コントロールですか?
UserControl 全体を削除してサブフォームをメインフォーム内に直接配置することはできませんが、機能するまで遊んでみるという適切な解決策を知りたいです...