Sdílet prostřednictvím


Zpracování postbacků ovládacího prvku PopupControl ovládacím prvkem UpdatePanel (VB)

Christian Wenz

Stáhnout PDF

Extender PopupControl v sadě nástrojů AJAX Control Toolkit nabízí snadný způsob, jak aktivovat automaticky otevírané okno, když je aktivován jakýkoli jiný ovládací prvek. Zvláštní pozornost je třeba věnovat, když v takovém automaticky otevírané nabídce dojde k zpětnému odeslání.

Přehled

Extender PopupControl v sadě nástrojů AJAX Control Toolkit nabízí snadný způsob, jak aktivovat automaticky otevírané okno, když je aktivován jakýkoli jiný ovládací prvek. Zvláštní pozornost je třeba věnovat, když v takovém automaticky otevírané nabídce dojde k zpětnému odeslání.

Postup

Při použití PopupControl se zpětným odesláním může objekt UpdatePanel zabránit aktualizaci stránky způsobené zpětným odesláním. Následující kód definuje několik důležitých prvků:

  • Ovládací ScriptManager prvek tak, aby ASP.NET AJAX Control Toolkit fungoval
  • Dva TextBox ovládací prvky, které aktivují automaticky otevírané okno
  • Ovládací Panel prvek, který bude sloužit jako automaticky otevírané okno
  • V panelu je ovládací prvek Calendar vložený do ovládacího prvku UpdatePanel .
  • Dva PopupControlExtender ovládací prvky, které přiřazují panel k textovým polím
<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>

Všimněte si OnSelectionChanged , že atribut Calendar ovládacího prvku je nastavený. Takže když uživatel vybere datum v kalendáři, dojde k zpětnému odeslání a spustí se metoda c1_SelectionChanged() na straně serveru. V rámci této metody musí být načteno aktuální datum a zapsáno zpět do textového pole.

Syntaxe je následující: Nejprve musí být vygenerován objekt proxy pro PopupControlExtender objekt na stránce. ASP.NET AJAX Control Toolkit nabízí metodu GetProxyForCurrentPopup() . Objekt vrácený touto metodou podporuje metodu Commit() , která odešle hodnotu zpět ovládacímu prvku, který aktivoval místní okno (ne ovládacímu prvku, který aktivoval volání metody).). Následující kód poskytne vybrané datum jako argument pro metodu Commit() , což způsobí, že kód zapíše vybrané datum zpět do textového pole:

<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>

Když teď kliknete na datum v kalendáři, zobrazí se vybrané datum v přidruženém textovém poli a vznikne ovládací prvek pro výběr data, který je aktuálně dostupný na mnoha webech.

Kalendář se zobrazí, když uživatel klikne do textového pole.

Kalendář se zobrazí, když uživatel klikne do textového pole (kliknutím zobrazíte obrázek v plné velikosti).

Kliknutím na datum ho vložíte do textového pole.

Kliknutím na datum ho vložíte do textového pole (kliknutím zobrazíte obrázek v plné velikosti).