通过


动态填充控件 (VB)

作者 :克里斯蒂安·温茨

下载 PDF

ASP.NET AJAX 控件工具包中的 DynamicPopulate 控件调用 Web 服务(或页面方法),并将生成的值填充到页面上的目标控件中,而无需刷新页面。

概述

DynamicPopulate ASP.NET AJAX 控件工具包中的控件调用 Web 服务(或页面方法),并将生成的值填充到页面上的目标控件中,而无需刷新页面。 本教程介绍如何进行设置。

步骤

首先,需要一个 ASP.NET Web 服务,它实现要调用 DynamicPopulate的方法。 Web 服务类需要 ScriptService 属性,该属性在 Microsoft.Web.Script.Services 中定义,否则 ASP.NET AJAX 无法为 Web 服务创建所需的客户端 JavaScript 代理,而 DynamicPopulate 又依赖于此代理。

Web 方法必须期望一个名为contextKey的字符串类型参数,因为DynamicPopulate控件在每个 Web 服务调用时会发送一条上下文信息。 以下 Web 服务以参数表示 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

然后,Web 服务将保存为 DynamicPopulate.vb.asmx。 或者,可以在实际的 ASP.NET 页中利用 DynamicPopulate 控件将 getDate() 方法实现为页面方法。

在下一步中,创建新的 ASP.NET 文件。 与往常一样,第一步是在当前页中包含 ScriptManager,以加载 ASP.NET AJAX 库并保证 Control Toolkit 正常工作:

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

然后,添加标签控件(例如,使用同名的 HTML 控件或 <asp:Label /> Web 控件),稍后将显示 Web 服务调用的结果。

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

然后将使用 HTML 按钮(作为 HTML 控件,因为我们不需要回发到服务器)来触发动态数据填充。

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

最后,我们需要DynamicPopulateExtender控件来进行连接设置。 将设置以下属性(除了显然的那些,比如IDrunat="server"):

  • TargetControlID 将来自 Web 服务调用的结果放置在何处
  • ServicePath Web 服务的路径(如果想要使用页面方法,请省略)
  • ServiceMethod Web 方法或页面方法的名称
  • ContextKey 要发送到 Web 服务的上下文信息
  • PopulateTriggerControlID 触发 Web 服务调用的元素
  • ClearContentsDuringUpdate 是否在 Web 服务调用期间清空目标元素

正如你所看到的,控件要求一些信息,但一切安排就绪相当简单。 下面是当前方案中控件 DynamicPopulateExtender 的标记:

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

在浏览器中运行 ASP.NET 页,然后单击按钮;你将收到以月-天-年格式的当前日期。

单击该按钮可从服务器检索日期

单击该按钮可从服务器检索日期(单击以查看全尺寸图像