aspx ページから ascx モーダル ポップアップにデータを渡すにはどうすればよいですか?
-
08-06-2019 - |
質問
私は ASP.NET についてはかなり初心者で、物事がどのように行われるかを学ぼうとしています。私は C# のバックグラウンドを持っているので、コードビハインドの部分は簡単ですが、Web 開発者のように考えるのは慣れていません。
チェックボックスのグリッドを含む aspx ページがあります。Button_Click イベントを介してコード化されたボタンがあり、チェックされる行のリストを収集し、そのリストからセッション変数を作成します。同じボタンは、ascx ページのパネルを制御する ascx ページの ModalPopupExtender によって (TargetControlID 経由で) 参照されます。
ボタンをクリックすると、モーダル ポップアップが開きますが、Button_Click イベントは発生しないため、モーダルはセッション データを取得しません。
2 つのページは別々であるため、aspx.cs コードから ModalPopupExtender を呼び出すことができません。ascx.cs コードからチェックボックスのリストにアクセスできません。また、セッション変数に値を設定する方法がわかりません。次に、プログラムで他の隠しボタンまたはコントロールをアクティブにして、モーダル ポップアップを開きます。
何かご意見は?
解決
usercontrol(.ascx) ファイルはすべて、再利用可能な機能を提供するためにグループ化されたコントロールのセットです。ここで定義されているコントロールは、ページのライフサイクル中に引き続きページのコントロール コレクション (.aspx) に追加されます。ModalPopupExtender は、javascript と dhtml を使用して、ユーザー コントロールのクライアント側のコントロールを表示および非表示にします。表示されているのは、クリック イベントが ModalPoupExtender によってクライアント側で処理され、サーバーへのポストバックがキャンセルされているということです。これは設計によるデフォルトの動作です。ただし、ユーザー コントロールはすべて同じコントロール ツリーの一部であるため、ユーザー コントロールのコードビハインドからページのコントロール コレクションにアクセスすることは確かに可能です。任意のコントロールの FindControl(xxx) メソッドを使用して、必要なコントロールの子を検索するだけです。
他のヒント
DancesWithBamboo の回答に従っていくつかの調査を行った後、それを機能させる方法を見つけました。
私の aspx ページ内の私の ascx ページへの参照の例:
<uc1:ChildPage ID="MyModalPage" runat="server" />
ModalPopupExtender (modalPopup という名前) を取得して開くための aspx コードビハインドは次のようになります。
AjaxControlToolkit.ModalPopupExtender mpe =
(AjaxControlToolkit.ModalPopupExtender)
MyModalPage.FindControl("modalPopup");
mpe.Show();
申し訳ありませんが、混乱しています。ascx を直接呼び出すことはできないので...
非表示のパネルなど、同じページ内から呼び出しているモーダル コードですか。
それとも、クリック イベントで呼び出している別の aspx ページですか?