Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
oleh Christian Wenz
Kontrol DynamicPopulate di ASP.NET AJAX Control Toolkit memanggil layanan web (atau metode halaman) dan mengisi nilai yang dihasilkan ke dalam kontrol target di halaman, tanpa refresh halaman.
Gambaran Umum
DynamicPopulate
Kontrol di ASP.NET AJAX Control Toolkit memanggil layanan web (atau metode halaman) dan mengisi nilai yang dihasilkan ke dalam kontrol target di halaman, tanpa refresh halaman. Tutorial ini menunjukkan cara mengatur ini.
Langkah-langkah
Pertama-tama, Anda memerlukan Layanan Web ASP.NET yang mengimplementasikan metode yang akan dipanggil oleh DynamicPopulate
. Kelas layanan web memerlukan ScriptService
atribut yang ditentukan di dalam Microsoft.Web.Script.Services
; jika tidak, ASP.NET AJAX tidak dapat membuat proksi JavaScript sisi klien untuk layanan web yang pada gilirannya diperlukan oleh DynamicPopulate
.
Metode web harus mengharapkan satu argumen jenis string, yang disebut contextKey
, karena DynamicPopulate
kontrol mengirim satu bagian informasi konteks dengan setiap panggilan layanan web. Layanan web berikut mengembalikan tanggal saat ini dalam format yang diwakili oleh contextKey
argumen:
<%@ 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
Layanan web kemudian disimpan sebagai DynamicPopulate.vb.asmx
. Atau, Anda dapat menerapkan getDate()
metode sebagai metode halaman dalam halaman ASP.NET aktual dengan DynamicPopulate
kontrol.
Pada langkah berikutnya, buat file ASP.NET baru. Seperti biasa, langkah pertama adalah menyertakan ScriptManager
di halaman saat ini untuk memuat pustaka AJAX ASP.NET dan membuat Control Toolkit berfungsi:
<asp:ScriptManager ID="asm" runat="server" />
Kemudian, tambahkan kontrol label (misalnya menggunakan kontrol HTML dengan nama yang sama, atau <asp:Label
kontrol /> web) yang nantinya akan menampilkan hasil panggilan layanan web.
<label id="myDate" runat="server" />
Tombol HTML (sebagai kontrol HTML, karena kami tidak memerlukan postback ke server) kemudian akan digunakan untuk memicu populasi dinamis:
<input type="button" id="Button1" runat="server" value="Load date (m-d-y)" />
Akhirnya, kita perlu DynamicPopulateExtender
kontrol untuk menyambungkan semuanya. Atribut berikut akan diatur (terlepas dari atribut yang jelas, ID
dan runat
="server"
):
-
TargetControlID
tempat meletakkan hasil dari panggilan layanan web -
ServicePath
jalur ke layanan web (hilangkan jika Anda ingin menggunakan metode halaman) -
ServiceMethod
nama metode web atau metode halaman -
ContextKey
informasi konteks yang akan dikirim ke layanan web -
PopulateTriggerControlID
elemen yang memicu panggilan layanan web -
ClearContentsDuringUpdate
apakah akan mengosongkan elemen target selama panggilan layanan web
Seperti yang Anda lihat, kontrol membutuhkan beberapa informasi tetapi menempatkan semuanya ke tempat yang cukup lurus ke depan. Berikut adalah markup untuk DynamicPopulateExtender
kontrol dalam skenario saat ini:
<ajaxToolkit:DynamicPopulateExtender ID="dpe1" runat="server"
ClearContentsDuringUpdate="true"
TargetControlID="myDate" ServicePath="DynamicPopulate.vb.asmx"
ServiceMethod="getDate"
ContextKey="format1" PopulateTriggerControlID="Button1" />
Jalankan halaman ASP.NET di browser dan klik tombol ; Anda akan menerima tanggal saat ini dalam format bulan-hari-tahun.
Klik tombol mengambil tanggal dari server (Klik untuk melihat gambar ukuran penuh)