Динамическое заполнение элемента управления (VB)
Кристиан Венц (Christian Wenz)
Элемент управления DynamicPopulate в ASP.NET AJAX Control Toolkit вызывает веб-службу (или метод страницы) и заполняет полученное значение в целевой элемент управления на странице без обновления страницы.
Общие сведения
Элемент DynamicPopulate
управления в ASP.NET AJAX Control Toolkit вызывает веб-службу (или метод страницы) и заполняет полученное значение в целевой элемент управления на странице без обновления страницы. В этом руководстве показано, как настроить эту настройку.
Этапы
Прежде всего, требуется веб-служба ASP.NET, которая реализует метод , вызываемый методом DynamicPopulate
. Классу веб-службы требуется ScriptService
атрибут , определенный в ; в Microsoft.Web.Script.Services
противном случае ASP.NET AJAX не сможет создать прокси-сервер JavaScript на стороне клиента для веб-службы, который, в свою очередь, требуется DynamicPopulate
для .
Веб-метод должен ожидать один аргумент типа string, называемый contextKey
, так как DynamicPopulate
элемент управления отправляет один фрагмент контекстной информации при каждом вызове веб-службы. Следующая веб-служба возвращает текущую дату в формате, представленном аргументом 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
Затем веб-служба сохраняется как DynamicPopulate.vb.asmx
. Кроме того, можно реализовать getDate()
метод как метод страницы в фактической ASP.NET страницы с элементом DynamicPopulate
управления .
На следующем шаге создайте файл ASP.NET. Как всегда, первым шагом является включение ScriptManager
на текущей странице, чтобы загрузить библиотеку ASP.NET AJAX и обеспечить работу набора средств управления:
<asp:ScriptManager ID="asm" runat="server" />
Затем добавьте элемент управления label (например, с помощью элемента управления HTML с тем же именем или <asp:Label
веб-элемента управления /> ), который позже отобразит результат вызова веб-службы.
<label id="myDate" runat="server" />
Кнопка HTML (как элемент управления HTML, так как обратная связь на сервер не требуется) будет использоваться для активации динамического заполнения:
<input type="button" id="Button1" runat="server" value="Load date (m-d-y)" />
Наконец, нам нужен DynamicPopulateExtender
контроль, чтобы подключить вещи. Будут заданы следующие атрибуты (помимо очевидных, ID
и runat
="server"
):
TargetControlID
куда поместить результат вызова веб-службыServicePath
путь к веб-службе (опустить, если вы хотите использовать метод страницы)ServiceMethod
имя веб-метода или метода страницыContextKey
контекстные сведения, отправляемые в веб-службуPopulateTriggerControlID
элемент , который активирует вызов веб-службыClearContentsDuringUpdate
следует ли очищать целевой элемент во время вызова веб-службы
Как видите, элемент управления требует некоторых сведений, но положить все на место довольно просто. Ниже приведена разметка DynamicPopulateExtender
для элемента управления в текущем сценарии.
<ajaxToolkit:DynamicPopulateExtender ID="dpe1" runat="server"
ClearContentsDuringUpdate="true"
TargetControlID="myDate" ServicePath="DynamicPopulate.vb.asmx"
ServiceMethod="getDate"
ContextKey="format1" PopulateTriggerControlID="Button1" />
Запустите страницу ASP.NET в браузере и нажмите кнопку ; вы получите текущую дату в формате месяц-день-год.
Нажатие кнопки извлекает дату с сервера (щелкните для просмотра полноразмерного изображения)