Bagikan melalui


Mengisi Kontrol (VB) Secara Dinamis

oleh Christian Wenz

Unduh PDF

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 tombol mengambil tanggal dari server (Klik untuk melihat gambar ukuran penuh)