Dynamické naplnění ovládacího prvku (C#)
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žbyServicePath
cesta k webové službě (vynechat, pokud chcete použít metodu stránky)ServiceMethod
název webové metody nebo metody stránkyContextKey
kontextové informace, které se mají odeslat do webové službyPopulateTriggerControlID
element, který aktivuje volání webové službyClearContentsDuringUpdate
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 zobrazíte obrázek v plné velikosti).