以動態方式填入控制項 (VB)

作者 :一個是一個

下載 PDF

ASP.NET AJAX 控制項工具組中的 DynamicPopulate 控制項會呼叫 Web 服務 (或頁面方法) ,並在頁面上將產生的值填入目標控制項,而不需重新整理頁面。

概觀

DynamicPopulateASP.NET AJAX Control Toolkit 中的控制項會呼叫 Web 服務 (或頁面方法,) 並將產生的值填入頁面上的目標控制項,而不需重新整理頁面。 本教學課程說明如何設定此設定。

步驟

首先,您需要 ASP.NET Web 服務,以實作 所 DynamicPopulate 呼叫的方法。 Web 服務類別需要 ScriptService 定義于 內的 Microsoft.Web.Script.Services 屬性,否則 ASP.NET AJAX 無法為需要的 DynamicPopulate Web 服務建立用戶端 JavaScript Proxy。

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 。 或者,您可以使用 getDate() 控制項,在實際 ASP.NET 網頁中實作 方法做為頁面 DynamicPopulate 方法。

在下一個步驟中,建立新的 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 控制項來連接專案。 下列屬性會設定 (與明顯的屬性, ID 以及 runat="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] 頁面,然後按一下按鈕;您會收到月-日-年格式的目前日期。

按一下按鈕會從伺服器擷取日期

按一下按鈕會從伺服器擷取日期, (按一下即可檢視大小完整的影像)