ポップアップ コントロールからポストバックを処理する (UpdatePanel あり) (C#)
AJAX Control Toolkit の PopupControl エクステンダーは、他のコントロールがアクティブになったときにポップアップをトリガーする簡単な方法を提供します。 このようなポップアップ内でポストバックが発生した場合は、特別な注意が必要です。
概要
AJAX Control Toolkit の PopupControl エクステンダーは、他のコントロールがアクティブになったときにポップアップをトリガーする簡単な方法を提供します。 このようなポップアップ内でポストバックが発生した場合は、特別な注意が必要です。
手順
ポストバックで を PopupControl
使用する場合、 は UpdatePanel
ポストバックによって引き起こされるページの更新を防ぐことができます。 次のマークアップは、いくつかの重要な要素を定義します。
ScriptManager
ASP.NET AJAX Control Toolkit が動作するようにするコントロール- 両方ともポップアップをトリガーする 2 つの
TextBox
コントロール Panel
ポップアップとして機能するコントロール- パネル内では、
Calendar
コントロールはコントロール内にUpdatePanel
埋め込まれます - パネルをテキスト ボックスに割り当てる 2 つの
PopupControlExtender
コントロール
<form id="form1" runat="server">
<asp:ScriptManager ID="asm" runat="server" />
<div>
Departure date: <asp:TextBox ID="tbDeparture" runat="server" />
Return date: <asp:TextBox ID="tbReturn" runat="server" />
</div>
<asp:Panel ID="pnlCalendar" runat="server">
<asp:UpdatePanel ID="up1" runat="server">
<ContentTemplate>
<asp:Calendar ID="c1" runat="server"
OnSelectionChanged="c1_SelectionChanged" />
</ContentTemplate>
</asp:UpdatePanel>
</asp:Panel>
<ajaxToolkit:PopupControlExtender ID="pce1" runat="server"
TargetControlID="tbDeparture" PopupControlID="pnlCalendar" Position="Bottom" />
<ajaxToolkit:PopupControlExtender ID="pce2" runat="server"
TargetControlID="tbReturn" PopupControlID="pnlCalendar" Position="Bottom" />
</form>
コントロールの OnSelectionChanged
属性が設定されていることに Calendar
注意してください。 そのため、ユーザーが予定表内の日付を選択すると、ポストバックが発生し、サーバー側のメソッド c1_SelectionChanged()
が実行されます。 そのメソッド内では、現在の日付を取得し、テキスト ボックスに書き戻す必要があります。
の構文は次のとおりです。まず、ページ上の の PopupControlExtender
プロキシ オブジェクトを生成する必要があります。 ASP.NET AJAX Control Toolkit では、 メソッドが GetProxyForCurrentPopup()
提供されます。 このメソッドが返すオブジェクトは、ポップアップを Commit()
トリガーしたコントロール (メソッド呼び出しをトリガーしたコントロールではありません) に値を戻す メソッドをサポートします。 次のコードは、選択した日付を メソッドの Commit()
引数として提供し、選択した日付をテキスト ボックスに書き戻します。
<script runat="server">
protected void c1_SelectionChanged(object sender, EventArgs e)
{
PopupControlExtender pce = AjaxControlToolkit.PopupControlExtender.GetProxyForCurrentPopup(Page);
pce.Commit((sender as Calendar).SelectedDate.ToShortDateString());
}
</script>
予定表の日付をクリックするたびに、選択した日付が関連付けられたテキスト ボックスに表示され、現在多くの Web サイトで見つかる日付ピッカー コントロールが作成されます。
[予定表] は、ユーザーがテキスト ボックスをクリックしたときに表示されます (フルサイズの画像を表示する場合にクリックします)
日付をクリックすると、テキスト ボックスに表示されます (フルサイズの画像を表示する場合はクリックします)