Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
által Christian Wenz
Az ASP.NET AJAX vezérlőeszközkészlet DynamicPopulate vezérlőeleme meghív egy webszolgáltatást (vagy lapmetódust), és az eredményül kapott értéket a lap egy célvezérlőjébe tölti ki lapfrissítés nélkül. A populációt egyéni ügyféloldali JavaScript-kóddal is aktiválhatja.
Áttekintés
Az DynamicPopulate ASP.NET AJAX-vezérlőeszközkészlet vezérlője meghív egy webszolgáltatást (vagy lapmetódust), és az eredményül kapott értéket kitölti egy célvezérlőbe a lapon, oldalfrissítés nélkül. A populációt egyéni ügyféloldali JavaScript-kóddal is aktiválhatja.
Lépések
Először is szüksége van egy ASP.NET webszolgáltatásra, amely implementálja a vezérlő által meghívandó metódust DynamicPopulateExtender . A webszolgáltatás implementálja azt a metódust getDate(), amely egy sztring típusú argumentumot vár, mivel a contextKeyDynamicPopulate vezérlő minden webszolgáltatás-híváshoz küld egy-egy környezeti információt. Az alábbi kód (fájl DynamicPopulate.vb.asmx) három formátum egyikében kéri le az aktuális dátumot:
<%@ WebService Language="VB" Class="DynamicPopulate" %>
Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.Web.Script.Services
<ScriptService()> _
Public Class DynamicPopulate
Inherits System.Web.Services.WebService
<WebMethod()> _
Public Function getDate(ByVal contextKey As String) As String
Dim myDate As String = ""
Select Case contextKey
Case "format1"
myDate = String.Format("{0:MM}-{0:dd}-{0:yyyy}", DateTime.Now)
Case "format2"
myDate = String.Format("{0:dd}.{0:MM}.{0:yyyy}", DateTime.Now)
Case "format3"
myDate = String.Format("{0:yyyy}/{0:MM}/{0:dd}", DateTime.Now)
End Select
Return myDate
End Function
End Class
A következő lépésben hozzon létre egy új ASP.NET webhelyet, és kezdje az ASP.NET AJAX ScriptManager vezérlővel:
<asp:ScriptManager ID="asm" runat="server" />
Ezután adjon hozzá egy címkevezérlőt (például az azonos nevű HTML-vezérlő vagy a <asp:Label /> webvezérlő használatával), amely később megjeleníti a webszolgáltatás hívásának eredményét.
<label id="myDate" runat="server" />
Ezután adjon meg egy vezérlőt DynamicPopulateExtender , és adja meg a webszolgáltatás adatait, a célvezérlőt, de a populációt aktiváló vezérlő nevét nem. Ezt később egyéni JavaScript használatával végezheti el!
<ajaxToolkit:DynamicPopulateExtender ID="dpe1" runat="server"
ClearContentsDuringUpdate="true"
TargetControlID="myDate" ServicePath="DynamicPopulate.vb.asmx"
ServiceMethod="getDate" />
Most átérünk a JavaScript részre. Az $find() függvény, amelyet az ASP.NET AJAX könyvtár definiál, egy hivatkozást ad vissza az ASP.NET AJAX vezérlőkészlet kiszolgálóoldali objektumaira, mint például DynamicPopulateExtender. Az aktuális fájlban $find("dpe") a lap egyetlen DynamicPopulateExtender vezérlőelemére mutató hivatkozást ad vissza. Egy metódust populate() biztosít, amely elindítja a dinamikus népesítési folyamatot. A populate() metódushoz egy argumentum szükséges: a környezeti kulcs, amely a getDate() webes metódus argumentumaként szolgál. Így például $find("dpe").populate("format1") az aktuális dátummal tölti fel a címkét hónap-nap formátumban.
A minta rugalmasabbá tétele érdekében a felhasználó mostantól több dátumformátum közül választhat. Mindegyiknél megjelenik egy választógomb. Miután a felhasználó rákattint egy választógombra, a JavaScript-kód dinamikusan kitölti a címkét a kiválasztott dátumformátummal. Itt vannak a választógombok:
<asp:Panel ID="panel1" runat="server">
<input type="radio" id="rb1" name="format" value="format1" runat="server"
onclick="$find('dpe1').populate(this.value);" />m-d-y
<input type="radio" id="rb2" name="format" value="format2" runat="server"
onclick="$find('dpe1').populate(this.value);" />d.m.y
<input type="radio" id="rb3" name="format" value="format3" runat="server"
onclick="$find('dpe1').populate(this.value);" />y/m/d
</asp:Panel>
Vegye figyelembe, hogy egy választógomb kontextusában a JavaScript-kifejezés this.value az aktuális gomb értékére hivatkozik, amely történetesen pontosan ugyanaz az információ, amellyel a getDate() metódus képes dolgozni.
A gombra kattintva lekéri a dátumot a kiszolgálóról a megadott formátumban (Ide kattintva megtekintheti a teljes méretű képet)