CascadingDropDown Kullanarak Liste Doldurma (C#)
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.cs.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 CascadingDropDownNameValue[] MethodNameHere(string knownCategoryValues,
string category)
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="C#" Class="CascadingDropdown0" %>
using System.Web.Script.Services;
using AjaxControlToolkit;
using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Collections.Generic;
[ScriptService]
public class CascadingDropdown0 : System.Web.Services.WebService
{
[WebMethod]
public CascadingDropDownNameValue[] GetVendors(string knownCategoryValues,
string category)
{
List<CascadingDropDownNameValue> l = new List<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();
}
}
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)