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 CascadingDropDown di Toolkit Kontrol AJAX memperluas kontrol DropDownList sehingga perubahan dalam satu DropDownList memuat nilai terkait di DropDownList lain. Namun saat menggunakan kontrol CascadingDropDown, ASP. Fitur AutoPostBack kontrol DropDownList NET tidak berfungsi, karena memuat data secara asinkron ke dalam daftar menghasilkan postback (tidak perlu) itu sendiri. Dengan beberapa kode JavaScript, efek ini dapat dihindari.
Gambaran Umum
Kontrol CascadingDropDown di Toolkit Kontrol AJAX memperluas kontrol DropDownList sehingga perubahan dalam satu DropDownList memuat nilai terkait di DropDownList lain. (Misalnya, satu daftar menyediakan daftar status AS, dan daftar berikutnya kemudian diisi dengan kota-kota besar di negara bagian tersebut.) Namun saat menggunakan kontrol CascadingDropDown, ASP. Fitur AutoPostBack kontrol DropDownList NET tidak berfungsi, karena memuat data secara asinkron ke dalam daftar menghasilkan postback (tidak perlu) itu sendiri. Dengan beberapa kode JavaScript, efek ini dapat dihindari.
Langkah-langkah
Untuk mengaktifkan fungsionalitas ASP.NET AJAX dan Control Toolkit, ScriptManager
kontrol harus diletakkan di mana saja di halaman (tetapi dalam <form
> elemen ):
<asp:ScriptManager ID="asm" runat="server" />
Kemudian, kontrol DropDownList diperlukan:
<div>
Vendor: <asp:DropDownList ID="VendorsList" runat="server"/>
</div>
Untuk daftar ini, extender CascadingDropDown ditambahkan, menyediakan URL layanan web dan informasi metode:
<ajaxToolkit:CascadingDropDown ID="ccd1" runat="server"
ServicePath="CascadingDropdown3.vb.asmx" ServiceMethod="GetVendors"
TargetControlID="VendorsList" Category="Vendor" />
Extender CascadingDropDown kemudian secara asinkron memanggil layanan web dengan tanda tangan metode berikut:
Public Function MethodNameHere(ByVal knownCategoryValues As String, ByVal category As String) As CascadingDropDownNameValue()
Metode mengembalikan array jenis nilai CascadingDropDown. Konstruktor jenis mengharapkan terlebih dahulu caption entri daftar dan kemudian nilai (atribut HTMLvalue
).
<%@ WebService Language="VB" Class="CascadingDropDown3" %>
Imports System.Web.Script.Services
Imports AjaxControlToolkit
Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.Collections.Generic
<ScriptService()> _
Public Class CascadingDropDown3
Inherits System.Web.Services.WebService
<WebMethod()> _
Public Function GetVendors(ByVal knownCategoryValues As String, ByVal category As String) As CascadingDropDownNameValue()
Dim l As New List(Of CascadingDropDownNameValue)
l.Add(New CascadingDropDownNameValue("International", "1"))
l.Add(New CascadingDropDownNameValue("Electronic Bike Repairs & Supplies","2"))
l.Add(New CascadingDropDownNameValue("Premier Sport, Inc.", "3"))
Return l.ToArray()
End Function
End Class
Memuat halaman di browser akan mengisi daftar dropdown dengan tiga vendor, yang kedua telah dipilih sebelumnya. Selain itu, ASP.NET mendefinisikan __doPostBack()
metode JavaScript. Setelah halaman dimuat, panggilan JavaScript ini ditambahkan ke daftar dropdown, tetapi hanya jika ada elemen di dalamnya. Jika tidak ada elemen dalam daftar, Control Toolkit saat ini memuatnya, sehingga kode JavaScript menggunakan batas waktu dan mencoba lagi dalam setengah detik.
<script type="text/javascript">
function pageLoad()
{
addAutoPostBack();
}
function addAutoPostBack()
{
if ($get("VendorsList").options.length > 0)
{
$get("VendorsList").setAttribute("onchange","javascript:setTimeout('__doPostBack(\\'VendorsList\\',\\'\\')', 0)");
}
else
{
setTimeout("addAutoPostBack()", 500);
}
}
</script>
Dengan cara ini, postback hanya dijalankan ketika sebenarnya ada elemen dalam daftar dan pengguna memilih entri.
Memilih elemen daftar menyebabkan postback (Klik untuk melihat gambar ukuran penuh)