동적으로 컨트롤 채우기(C#)

작성자: Christian Wenz

PDF 다운로드

ASP.NET AJAX 컨트롤 도구 키트의 DynamicPopulate 컨트롤은 웹 서비스(또는 페이지 메서드)를 호출하고 결과 값을 페이지 새로 고침 없이 페이지의 대상 컨트롤에 채웁니다.

개요

ASP.NET AJAX 컨트롤 도구 키트의 컨트롤은 DynamicPopulate 웹 서비스(또는 페이지 메서드)를 호출하고 결과 값을 페이지 새로 고침 없이 페이지의 대상 컨트롤에 채웁니다. 이 자습서에서는 이를 설정하는 방법을 보여줍니다.

단계

우선 에서 호출 DynamicPopulate할 메서드를 구현하는 ASP.NET Web Service가 필요합니다. 웹 서비스 클래스에는 내에 Microsoft.Web.Script.Services정의된 특성이 필요합니다ScriptService. 그렇지 않으면 ASP.NET AJAX는 웹 서비스에 대한 클라이언트 쪽 JavaScript 프록시를 만들 수 없으며, 이 프록시는 에 필요합니다DynamicPopulate.

컨트롤이 각 웹 서비스 호출을 통해 컨텍스트 정보를 한 조각 보내기 때문에 DynamicPopulate 웹 메서드는 라는 문자열 contextKey형식의 인수 하나를 예상해야 합니다. 다음 웹 서비스는 인수가 나타내는 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 />웹 컨트롤을 사용하는 instance)을 추가합니다.

<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 페이지를 실행하고 단추를 클릭합니다. 현재 날짜를 월-일-연도 형식으로 받게 됩니다.

단추를 클릭하면 서버에서 날짜가 검색됩니다.

단추를 클릭하면 서버에서 날짜가 검색됩니다(전체 크기 이미지를 보려면 클릭).