Obsługa ogłaszania zwrotnego w kontrolce Popup z kontrolką UpdatePanel (VB)
Autor: Christian Wenz
Rozszerzenie PopupControl w zestawie narzędzi AJAX Control Toolkit oferuje łatwy sposób wyzwalania wyskakującego okienka po aktywowaniu dowolnej innej kontrolki. Szczególną ostrożność należy podjąć, gdy po powrocie następuje w takim wyskakującym okienku.
Omówienie
Rozszerzenie PopupControl w zestawie narzędzi AJAX Control Toolkit oferuje łatwy sposób wyzwalania wyskakującego okienka po aktywowaniu dowolnej innej kontrolki. Szczególną ostrożność należy podjąć, gdy po powrocie następuje w takim wyskakującym okienku.
Kroki
W przypadku korzystania z elementu PopupControl
z postback może UpdatePanel
uniemożliwić odświeżanie strony spowodowane przez postback. Następujące znaczniki definiują kilka ważnych elementów:
- Kontrolka
ScriptManager
umożliwiająca działanie zestawu narzędzi kontroli AJAX ASP.NET - Dwie
TextBox
kontrolki, które będą wyzwalać wyskakujące okienko - Kontrolka
Panel
, która będzie służyć jako wyskakujące okienko - W panelu kontrolka
Calendar
jest osadzona w kontrolceUpdatePanel
- Dwa
PopupControlExtender
kontrolki, które przypisują panel do pól tekstowych
<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>
Należy pamiętać, że OnSelectionChanged
atrybut kontrolki Calendar
jest ustawiony. Dlatego gdy użytkownik wybierze datę w kalendarzu, nastąpi powrót i zostanie wykonana metoda c1_SelectionChanged()
po stronie serwera. W ramach tej metody bieżąca data musi zostać pobrana i zapisana z powrotem w polu tekstowym.
Składnia tego elementu jest następująca: Najpierw należy wygenerować obiekt proxy dla PopupControlExtender
elementu na stronie. Zestaw narzędzi kontroli AJAX ASP.NET oferuje metodę GetProxyForCurrentPopup()
. Obiekt zwraca tę metodę obsługuje Commit()
metodę, która wysyła wartość z powrotem do kontrolki, która wyzwoliła wyskakujące okienko (a nie kontrolka, która wyzwoliła wywołanie metody!). Poniższy kod zawiera wybraną datę jako argument Commit()
metody, powodując, że kod zapisuje wybraną datę z powrotem w polu tekstowym:
<script runat="server">
Protected Sub c1_SelectionChanged(sender As object, e As EventArgs)
Dim pce As PopupControlExtender = AjaxControlToolkit.PopupControlExtender.GetProxyForCurrentPopup(Page)
pce.Commit(CType(sender, Calendar).SelectedDate.ToShortDateString())
End Sub
</script>
Teraz, gdy klikniesz datę kalendarza, wybrana data pojawi się w skojarzonym polu tekstowym, tworząc kontrolkę selektora dat, którą można obecnie znaleźć w wielu witrynach internetowych.
Kalendarz jest wyświetlany, gdy użytkownik kliknie w polu tekstowym (kliknij, aby wyświetlić obraz pełnowymiarowy)
Kliknięcie daty umieszcza ją w polu tekstowym (kliknij, aby wyświetlić obraz pełnowymiarowy)