5

私はASP.NETにかなり慣れていないので、物事がどのように行われるかを学ぼうとしています。私は C# のバックグラウンドを持っているので、コード ビハインド部分は簡単ですが、Web 開発者のように考えるのは慣れていません。

チェックボックスのグリッドを含む aspx ページがあります。Button_Click イベントを介してコード化されたボタンを使用して、チェックされる行のリストを収集し、そのリストからセッション変数を作成します。同じボタンは、ascx ページのパネルを制御する ascx ページの ModalPopupExtender によって (TargetControlID を介して) 参照されます。

ボタンがクリックされると、モーダル ポップアップが開きますが、Button_Click イベントは発生しないため、モーダルはセッション データを取得しません。

2 つのページが別々であるため、aspx.cs コードから ModalPopupExtender を呼び出すことができず、ascx.cs コードからチェックボックスのリストにアクセスできず、セッション変数を設定する方法がわかりません。次に、プログラムで他の非表示のボタンまたはコントロールをアクティブにして、モーダルポップアップを開きます。

何かご意見は?

4

3 に答える 3

3

すべての usercontrol(.ascx) ファイルは、再利用可能な機能を提供するためにグループ化された一連のコントロールです。その中で定義されたコントロールは、ページのライフサイクル中にページのコントロール コレクション (.aspx) に引き続き追加されます。ModalPopupExtender は、javascript と dhtml を使用して、usercontrol クライアント側のコントロールを表示および非表示にします。表示されているのは、クリック イベントが ModalPoupExtender によってクライアント側で処理され、サーバーへのポストバックがキャンセルされていることです。これは、仕様による既定の動作です。ユーザー コントロールのコード ビハインドからページのコントロール コレクションにアクセスすることはできますが、それはすべて同じコントロール ツリーの一部であるためです。コントロールの FindControl(xxx) メソッドを使用して、必要な子を検索します。

于 2008-08-15T20:25:28.017 に答える
1

DancesWithBamboo の回答に従っていくつかの調査を行った後、それを機能させる方法を見つけました。
aspx ページ内の ascx ページへの参照例:

<uc1:ChildPage ID="MyModalPage" runat="server" />

ModalPopupExtender (modalPopup という名前) を取得して開くための aspx コード ビハインドは、次のようになります。

AjaxControlToolkit.ModalPopupExtender mpe = 
    (AjaxControlToolkit.ModalPopupExtender) 
          MyModalPage.FindControl("modalPopup");
mpe.Show();
于 2008-08-18T14:50:46.117 に答える
0

申し訳ありませんが、私は混乱しています。ascx を直接呼び出すことはできないので...

非表示のパネルなど、同じページ内から呼び出しているモーダル コードです。

または、クリック イベントで呼び出している別の aspx ページですか?

于 2008-08-15T20:06:41.940 に答える