Заполнение списка с помощью CascadingDropDown (C#)
Элемент управления CascadingDropDown в наборе элементов управления AJAX расширяет элемент управления DropDownList, чтобы изменения в одном DropDownList загружали связанные значения в другом DropDownList. (Например, один список содержит список штатов США, а следующий список заполняется крупными городами в этом штате.) Первая задача— фактически заполнить раскрывающийся список с помощью этого элемента управления.
Общие сведения
Элемент управления CascadingDropDown в наборе элементов управления AJAX расширяет элемент управления DropDownList, чтобы изменения в одном DropDownList загружали связанные значения в другом DropDownList. (Например, один список содержит список штатов США, а следующий список заполняется крупными городами в этом штате.) Первая задача— фактически заполнить раскрывающийся список с помощью этого элемента управления.
Этапы
Чтобы активировать функциональные возможности ASP.NET AJAX и control Toolkit, ScriptManager
элемент управления должен быть размещен в любом месте страницы (но внутри <form>
элемента ):
<asp:ScriptManager ID="asm" runat="server" />
Затем требуется элемент управления DropDownList:
<div>
Vendor: <asp:DropDownList ID="VendorsList" runat="server" />
</div>
Для этого списка добавляется расширитель CascadingDropDown. Он отправляет асинхронный запрос веб-службе, которая затем возвращает список записей, которые будут отображаться в списке. Чтобы это работало, необходимо задать следующие атрибуты CascadingDropDown:
ServicePath
: URL-адрес веб-службы, предоставляющей записи списка.ServiceMethod
: веб-метод, предоставляющий записи списка.TargetControlID
: идентификатор раскрывающегося списка.Category
: сведения о категории, которые передаются в веб-метод при вызове.PromptText
: текст отображается при асинхронной загрузке данных списка с сервера.
Ниже приведена разметка CascadingDropDown
для элемента . Единственное различие между C# и VB заключается в имени связанной веб-службы:
<ajaxToolkit:CascadingDropDown ID="ccd1" runat="server"
ServicePath="CascadingDropdown0.cs.asmx" ServiceMethod="GetVendors"
TargetControlID="VendorsList" Category="Vendor" />
Код JavaScript, поступающий CascadingDropDown
из расширителя, вызывает метод веб-службы со следующей сигнатурой:
public CascadingDropDownNameValue[] MethodNameHere(string knownCategoryValues,
string category)
Поэтому важным аспектом является то, что метод должен возвращать массив типа CascadingDropDownNameValue
(определенный ASP.NET набором элементов управления AJAX). В конструкторе CascadingDropDownNameValue
необходимо сначала указать текст записи списка, а затем ее значение, как <option value="VALUE">NAME</option>
это делается в HTML. Ниже приведены примеры данных.
<%@ 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();
}
}
Загрузка страницы в браузере приведет к заполнению списка тремя поставщиками.
Список заполняется автоматически (щелкните для просмотра полноразмерного изображения)