Preenchimento dinâmico de um controle (VB)

por Christian Wenz

Baixar código ou baixar PDF

O controle DynamicPopulate no kit de ferramentas de controle AJAX ASP.NET chama um serviço Web (ou método de página) e preenche o valor resultante em um controle de destino na página, sem uma atualização de página.

Visão geral

O controle de DynamicPopulate no ASP.NET AJAX Control Toolkit chama um serviço Web (ou método de página) e preenche o valor resultante em um controle de destino na página, sem uma atualização de página. Este tutorial mostra como configurar isso.

Etapas

Em primeiro lugar, você precisa de um serviço Web ASP.NET que implementa o método a ser chamado por DynamicPopulate. A classe de serviço Web requer o atributo ScriptService que é definido no Microsoft.Web.Script.Services; caso contrário, o ASP.NET AJAX não poderá criar o proxy JavaScript do lado do cliente para o serviço Web que, por sua vez, é exigido pelo DynamicPopulate.

O método Web deve esperar um argumento do tipo cadeia de caracteres, chamado contextKey, uma vez que o controle de DynamicPopulate envia uma parte das informações de contexto com cada chamada de serviço da Web. O serviço Web a seguir retorna a data atual em um formato representado pelo argumento 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

O serviço Web é salvo como DynamicPopulate.vb.asmx. Como alternativa, você pode implementar o método getDate() como um método de página na página ASP.NET real com o controle DynamicPopulate.

Na próxima etapa, crie um novo arquivo ASP.NET. Como sempre, a primeira etapa é incluir o ScriptManager na página atual para carregar a biblioteca do ASP.NET AJAX e fazer com que o kit de ferramentas de controle funcione:

<asp:ScriptManager ID="asm" runat="server" />

Em seguida, adicione um controle rótulo (por exemplo, usando o controle HTML de mesmo nome ou o <asp:Label /> controle da Web) que mostrará posteriormente o resultado da chamada do serviço Web.

<label id="myDate" runat="server" />

Um botão HTML (como um controle HTML, já que não precisamos de um postback para o servidor), será usado para disparar a população dinâmica:

<input type="button" id="Button1" runat="server" value="Load date (m-d-y)" />

Finalmente, precisamos do controle de DynamicPopulateExtender para conectar as coisas. Os seguintes atributos serão definidos (além dos óbvios, ID e runat="server"):

  • TargetControlID onde colocar o resultado da chamada de serviço Web
  • ServicePath caminho para o serviço Web (Omita se você quiser usar um método de página)
  • ServiceMethod nome do método da Web ou do método de página
  • ContextKey informações de contexto a serem enviadas para o serviço Web
  • PopulateTriggerControlID elemento que dispara a chamada de serviço Web
  • ClearContentsDuringUpdate se o elemento de destino deve ser esvaziado durante a chamada do serviço Web

Como você pode ver, o controle requer algumas informações, mas colocar tudo em vigor é muito simples. Aqui está a marcação para o controle de DynamicPopulateExtender no cenário atual:

<ajaxToolkit:DynamicPopulateExtender ID="dpe1" runat="server"
 ClearContentsDuringUpdate="true"
 TargetControlID="myDate" ServicePath="DynamicPopulate.vb.asmx"
 ServiceMethod="getDate"
 ContextKey="format1" PopulateTriggerControlID="Button1" />

Execute a página ASP.NET no navegador e clique no botão; Você receberá a data atual no formato mês-dia-ano.

um clique no botão recupera a data do servidor

Um clique no botão recupera a data do servidor (clique para exibir a imagem em tamanho normal)