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

작성자 : Christian Wenz

PDF 다운로드

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="VB" Class="DynamicPopulate" %>
Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.Web.Script.Services
<ScriptService()> _
Public Class DynamicPopulate
 Inherits System.Web.Services.WebService
 <WebMethod()> _
 Public Function getDate(ByVal contextKey As String) As String
 Dim myDate As String = ""
 Select Case contextKey
 Case "format1"
 myDate = String.Format("{0:MM}-{0:dd}-{0:yyyy}", DateTime.Now)
 Case "format2"
 myDate = String.Format("{0:dd}.{0:MM}.{0:yyyy}", DateTime.Now)
 Case "format3"
 myDate = String.Format("{0:yyyy}/{0:MM}/{0:dd}", DateTime.Now)
 End Select
 Return myDate
 End Function
End Class

그런 다음 웹 서비스가 .로 DynamicPopulate.vb.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.vb.asmx"
 ServiceMethod="getDate"
 ContextKey="format1" PopulateTriggerControlID="Button1" />

브라우저에서 ASP.NET 페이지를 실행하고 단추를 클릭합니다. 현재 날짜는 월-일-연도 형식으로 받습니다.

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

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