Condividi tramite


Popolamento dinamico di un controllo (VB)

di Christian Wenz

Scarica il PDF

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.Servicesdi ; 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 Web
  • ServicePath percorso del servizio Web (omettere se si vuole usare un metodo di pagina)
  • ServiceMethod nome del metodo Web o del metodo di pagina
  • ContextKey informazioni sul contesto da inviare al servizio Web
  • PopulateTriggerControlID elemento che attiva la chiamata al servizio Web
  • ClearContentsDuringUpdate 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

Un clic sul pulsante recupera la data dal server (fare clic per visualizzare l'immagine a dimensione intera)