CascadingDropDown Kullanarak Liste Doldurma (VB)
Christian Wenz tarafından
AJAX Denetim Araç Seti'ndeki CascadingDropDown denetimi, DropDownList denetimini genişleterek bir DropDownList'teki değişikliklerin ilişkili değerleri başka bir DropDownList'e yüklemesini sağlar. (Örneğin, bir liste ABD eyaletlerinin listesini sağlar ve bir sonraki liste de bu eyaletteki büyük şehirlerle doldurulur.) Çözmenin ilk zorluğu, bu denetimi kullanarak bir açılan listeyi doldurmaktır.
Genel Bakış
AJAX Denetim Araç Seti'ndeki CascadingDropDown denetimi, DropDownList denetimini genişleterek bir DropDownList'teki değişikliklerin ilişkili değerleri başka bir DropDownList'e yüklemesini sağlar. (Örneğin, bir liste ABD eyaletlerinin listesini sağlar ve bir sonraki liste de bu eyaletteki büyük şehirlerle doldurulur.) Çözmenin ilk zorluğu, bu denetimi kullanarak bir açılan listeyi doldurmaktır.
Adımlar
ASP.NET AJAX ve Denetim Araç Seti'nin işlevselliğini etkinleştirmek için, ScriptManager
denetim sayfanın herhangi bir yerine (ancak öğesinin <form>
içine) yerleştirilmelidir:
<asp:ScriptManager ID="asm" runat="server" />
Ardından DropDownList denetimi gerekir:
<div>
Vendor: <asp:DropDownList ID="VendorsList" runat="server" />
</div>
Bu liste için CascadingDropDown genişleticisi eklenir. Bir web hizmetine zaman uyumsuz istek gönderir ve ardından listede görüntülenecek girdilerin listesini döndürür. Bunun çalışması için aşağıdaki CascadingDropDown özniteliklerinin ayarlanması gerekir:
ServicePath
: Liste girdilerini teslim eden bir web hizmetinin URL'siServiceMethod
: Liste girdilerini teslim eden web yöntemiTargetControlID
: Açılan listenin kimliğiCategory
: Çağrıldığında web yöntemine gönderilen kategori bilgileriPromptText
: Liste verileri sunucudan zaman uyumsuz olarak yüklenirken görüntülenen metin
Öğenin işaretlemesi aşağıdadır CascadingDropDown
. C# ile VB arasındaki tek fark, ilişkili web hizmetinin adıdır:
<ajaxToolkit:CascadingDropDown ID="ccd1" runat="server"
ServicePath="CascadingDropdown0.vb.asmx" ServiceMethod="GetVendors"
TargetControlID="VendorsList" Category="Vendor" />
Genişleticiden CascadingDropDown
gelen JavaScript kodu aşağıdaki imzaya sahip bir web hizmeti yöntemini çağırır:
Public Function MethodNameHere(ByVal knownCategoryValues As String, ByVal category As String) As CascadingDropDownNameValue()
Bu nedenle önemli olan, yöntemin bir tür CascadingDropDownNameValue
dizisi döndürmesi gerektiğidir (ASP.NET AJAX Denetim Araç Seti tarafından tanımlanır). Oluşturucuda CascadingDropDownNameValue
, önce liste girdisinin metni ve ardından değeri, HTML'de olduğu gibi <option value="VALUE">NAME</option>
sağlanmalıdır. Aşağıda bazı örnek veriler verilmiştir:
<%@ WebService Language="VB" Class="CascadingDropDown0" %>
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 CascadingDropDown0
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
Sayfanın tarayıcıda yüklenmesi, listenin üç satıcıyla doldurulması için tetiklenir.
Liste otomatik olarak doldurulur (Tam boyutlu görüntüyü görüntülemek için tıklayın)