Sdílet prostřednictvím


Dynamické naplnění ovládacího prvku (C#)

Christian Wenz

Stáhnout PDF

Ovládací prvek DynamicPopulate v ASP.NET AJAX Control Toolkit volá webovou službu (nebo metodu stránky) a vyplní výslednou hodnotu do cílového ovládacího prvku na stránce bez aktualizace stránky.

Přehled

Ovládací DynamicPopulate prvek v ASP.NET AJAX Control Toolkit volá webovou službu (nebo metodu stránky) a vyplní výslednou hodnotu do cílového ovládacího prvku na stránce bez aktualizace stránky. V tomto kurzu se dozvíte, jak to nastavit.

Postup

Nejprve potřebujete webovou službu ASP.NET, která implementuje metodu, která má být volána .DynamicPopulate Třída webové služby vyžaduje ScriptService atribut, který je definován v Microsoft.Web.Script.Services. V opačném případě ASP.NET AJAX nemůže vytvořit javascriptový proxy server na straně klienta pro webovou službu, který je následně vyžadován nástrojem DynamicPopulate.

Webová metoda musí očekávat jeden argument typu řetězec s názvem contextKey, protože DynamicPopulate ovládací prvek při každém volání webové služby odesílá jednu část kontextové informace. Následující webová služba vrátí aktuální datum ve formátu reprezentované argumentem 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;
 }
}

Webová služba se pak uloží jako DynamicPopulate.cs.asmx. Alternativně můžete metodu getDate() implementovat jako metodu stránky v rámci skutečné ASP.NET stránky s ovládacím DynamicPopulate prvku.

V dalším kroku vytvořte nový soubor ASP.NET. Jako vždy je prvním krokem zahrnutí ScriptManager na aktuální stránku, aby se načetla knihovna ASP.NET AJAX a aby sada nástrojů Control Toolkit fungovala:

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

Potom přidejte ovládací prvek popisku (například pomocí ovládacího prvku HTML se stejným názvem nebo <asp:Label ovládacího prvku /> web), který později zobrazí výsledek volání webové služby.

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

Tlačítko HTML (jako ovládací prvek HTML, protože nevyžadujeme postback na server) se pak použije k aktivaci dynamického souboru:

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

Nakonec potřebujeme DynamicPopulateExtender ovládací prvek, který vše sdružuje. Nastaví se následující atributy (kromě zřejmých ID atributů a=runat"server" ):

  • TargetControlID kam vložit výsledek z volání webové služby
  • ServicePath cesta k webové službě (vynechat, pokud chcete použít metodu stránky)
  • ServiceMethod název webové metody nebo metody stránky
  • ContextKey kontextové informace, které se mají odeslat do webové služby
  • PopulateTriggerControlID element, který aktivuje volání webové služby
  • ClearContentsDuringUpdate zda se má vyprázdnit cílový element během volání webové služby

Jak vidíte, ovládací prvek vyžaduje určité informace, ale uvedení všeho na místo je poměrně jednoduché. Tady je kód pro DynamicPopulateExtender ovládací prvek v aktuálním scénáři:

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

Spusťte stránku ASP.NET v prohlížeči a klikněte na tlačítko ; aktuální datum obdržíte ve formátu měsíc-den-rok.

Kliknutím na tlačítko se načte datum ze serveru.

Kliknutím na tlačítko se načte datum ze serveru (kliknutím zobrazíte obrázek v plné velikosti).