작성자 : Christian Wenz
ASP.NET AJAX 컨트롤 도구 키트의 DynamicPopulate 컨트롤은 웹 서비스(또는 페이지 메서드)를 호출하고 결과 값을 페이지 새로 고침 없이 페이지의 대상 컨트롤에 채웁니다.
개요
ASP.NET AJAX 컨트롤 도구 키트의 컨트롤은 DynamicPopulate 웹 서비스(또는 페이지 메서드)를 호출하고 결과 값을 페이지 새로 고침 없이 페이지의 대상 컨트롤에 채웁니다. 이 자습서에서는 이를 설정하는 방법을 보여줍니다.
단계
우선 호출할 메서드 DynamicPopulate를 구현하는 ASP.NET 웹 서비스가 필요합니다. 웹 서비스 클래스에는 Microsoft.Web.Script.Services 안에 정의된 ScriptService 특성이 필요합니다. 그렇지 않으면 ASP.NET AJAX는 DynamicPopulate에 필요한 웹 서비스에 대한 클라이언트 쪽 JavaScript 프록시를 만들 수 없습니다.
컨트롤이 각 웹 서비스 호출과 함께 컨텍스트 정보의 한 부분을 보내기 때문에 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저장됩니다. 또는 DynamicPopulate 컨트롤이 있는 실제 ASP.NET 페이지 내에서 메서드를 페이지 메서드로 구현할 getDate() 수 있습니다.
다음 단계에서는 새 ASP.NET 파일을 만듭니다. 언제나처럼 첫 번째 단계는 현재 페이지에 포함 ScriptManager 하여 ASP.NET AJAX 라이브러리를 로드하고 Control Toolkit이 작동하도록 하는 것입니다.
<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 페이지를 실행하고 단추를 클릭합니다. 현재 날짜는 월-일-연도 형식으로 받습니다.
단추를 클릭하면 서버에서 날짜가 검색됩니다(전체 크기 이미지를 보려면 클릭).