Динамическое заполнение элемента управления (C#)

Кристиан Венц

Загрузить PDF-файл

Элемент управления DynamicPopulate в наборе элементов управления ASP.NET AJAX вызывает веб-службу (или метод страницы) и заполняет полученное значение в целевой элемент управления на странице без обновления страницы.

Общие сведения

Элемент 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="C#" Class="DynamicPopulate" %>
using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Web.Script.Services;
[ScriptService]
public class DynamicPopulate : System.Web.Services.WebService
{
 [WebMethod]
 public string getDate(string contextKey)
 {
 string myDate = "";
 switch (contextKey)
 {
 case "format1":
 myDate = String.Format("{0:MM}-{0:dd}-{0:yyyy}", DateTime.Now);
 break;
 case "format2":
 myDate = String.Format("{0:dd}.{0:MM}.{0:yyyy}", DateTime.Now);
 break;
 case "format3":
 myDate = String.Format("{0:yyyy}/{0:MM}/{0:dd}", DateTime.Now);
 break;
 }
 return myDate;
 }
}

Затем веб-служба сохраняется как DynamicPopulate.cs.asmx. Кроме того, можно реализовать getDate() метод как метод страницы на фактической странице ASP.NET с элементом DynamicPopulate управления .

На следующем шаге создайте файл ASP.NET. Как всегда, первым шагом является включение ScriptManager на текущей странице, чтобы загрузить библиотеку ASP.NET AJAX и обеспечить работу набора средств управления:

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

Затем добавьте элемент управления меткой (например, с помощью элемента управления 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.cs.asmx"
 ServiceMethod="getDate"
 ContextKey="format1" PopulateTriggerControlID="Button1" />

Запустите страницу ASP.NET в браузере и нажмите кнопку ; вы получите текущую дату в формате месяц-день-год.

Нажатие кнопки извлекает дату с сервера.

Нажатие кнопки извлекает дату с сервера (щелкните для просмотра полноразмерного изображения)