动态填充控件 (VB)

作者 :Christian Wenz

下载 PDF

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

概述

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

步骤

首先,需要一个 ASP.NET Web 服务,它实现要由 DynamicPopulate调用的方法。 Web 服务类需要 ScriptServiceMicrosoft.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 如果要使用 page 方法, (省略 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”页,然后单击按钮;你将收到月份-日-年格式的当前日期。

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

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