Udostępnij za pośrednictwem


Obsługa ogłaszania zwrotnego w kontrolce Popup z kontrolką UpdatePanel (VB)

Autor: Christian Wenz

Pobierz plik PDF

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 kontrolce UpdatePanel
  • 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

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

Kliknięcie daty umieszcza ją w polu tekstowym (kliknij, aby wyświetlić obraz pełnowymiarowy)