Popolamento dinamico di un controllo (VB)
Il controllo DynamicPopulate nel ASP.NET AJAX Control Toolkit chiama un servizio Web (o un metodo di pagina) e inserisce il valore risultante in un controllo di destinazione nella pagina, senza un aggiornamento della pagina.
Panoramica
Il DynamicPopulate
controllo nel ASP.NET AJAX Control Toolkit chiama un servizio Web (o un metodo di pagina) e inserisce il valore risultante in un controllo di destinazione nella pagina, senza un aggiornamento della pagina. Questa esercitazione illustra come configurare questa operazione.
Passaggi
Prima di tutto, è necessario un servizio Web ASP.NET che implementa il metodo da chiamare da DynamicPopulate
. La classe del servizio Web richiede l'attributo ScriptService
definito all'interno Microsoft.Web.Script.Services
di ; in caso contrario, ASP.NET AJAX non può creare il proxy JavaScript sul lato client per il servizio Web che a sua volta è richiesto da DynamicPopulate
.
Il metodo Web deve prevedere un argomento di tipo stringa, denominato contextKey
, perché il DynamicPopulate
controllo invia una parte di informazioni di contesto con ogni chiamata al servizio Web. Il servizio Web seguente restituisce la data corrente in un formato rappresentato dall'argomento contextKey
:
<%@ 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
Il servizio Web viene quindi salvato come DynamicPopulate.vb.asmx
. In alternativa, è possibile implementare il getDate()
metodo come metodo di pagina all'interno della pagina ASP.NET effettiva con il DynamicPopulate
controllo .
Nel passaggio successivo creare un nuovo file di ASP.NET. Come sempre, il primo passaggio consiste nell'includere nella ScriptManager
pagina corrente per caricare la libreria ASP.NET AJAX e per far funzionare Control Toolkit:
<asp:ScriptManager ID="asm" runat="server" />
Aggiungere quindi un controllo etichetta (ad esempio usando il controllo HTML con lo stesso nome o il <asp:Label
controllo Web)> che in seguito mostrerà il risultato della chiamata al servizio Web.
<label id="myDate" runat="server" />
Un pulsante HTML (come controllo HTML, poiché non è necessario eseguire il postback al server) verrà quindi usato per attivare il popolamento dinamico:
<input type="button" id="Button1" runat="server" value="Load date (m-d-y)" />
Infine, abbiamo bisogno del DynamicPopulateExtender
controllo per collegare le cose. Gli attributi seguenti verranno impostati (a parte quelli ovvi e ID
=runat
"server"
):
TargetControlID
dove inserire il risultato dalla chiamata al servizio WebServicePath
percorso del servizio Web (omettere se si vuole usare un metodo di pagina)ServiceMethod
nome del metodo Web o del metodo di paginaContextKey
informazioni sul contesto da inviare al servizio WebPopulateTriggerControlID
elemento che attiva la chiamata al servizio WebClearContentsDuringUpdate
se svuotare l'elemento di destinazione durante la chiamata al servizio Web
Come si può notare, il controllo richiede alcune informazioni, ma mettere tutto in posizione è abbastanza semplice. Ecco il markup per il DynamicPopulateExtender
controllo nello scenario corrente:
<ajaxToolkit:DynamicPopulateExtender ID="dpe1" runat="server"
ClearContentsDuringUpdate="true"
TargetControlID="myDate" ServicePath="DynamicPopulate.vb.asmx"
ServiceMethod="getDate"
ContextKey="format1" PopulateTriggerControlID="Button1" />
Eseguire la pagina ASP.NET nel browser e fare clic sul pulsante ; si riceverà la data corrente in formato mese-giorno-anno.
Un clic sul pulsante recupera la data dal server (fare clic per visualizzare l'immagine a dimensione intera)