Udostępnij za pośrednictwem


Wstępne ustawianie pozycji listy przy użyciu kontrolki CascadingDropDown (C#)

Autor: Christian Wenz

Pobierz plik PDF

Kontrolka CascadingDropDown w zestawie narzędzi kontroli AJAX rozszerza kontrolkę DropDownList, aby zmiany w jednej liście DropDownList ładowały skojarzone wartości z innej listy rozwijanej. Przy odrobinie kodu można wstępnie wybrać element listy po dynamicznym załadowaniu danych.

Omówienie

Kontrolka CascadingDropDown w zestawie narzędzi kontroli AJAX rozszerza kontrolkę DropDownList, aby zmiany w jednej liście DropDownList ładowały skojarzone wartości z innej listy rozwijanej. (Na przykład jedna lista zawiera listę stanów USA, a następna lista jest następnie wypełniona głównymi miastami w tym stanie). Przy odrobinie kodu można wstępnie wybrać element listy po dynamicznym załadowaniu danych.

Kroki

Aby aktywować funkcje ASP.NET AJAX i Control Toolkit, ScriptManager kontrolka musi zostać umieszczona w dowolnym miejscu na stronie (ale w elemecie <form> ):

<asp:ScriptManager ID="asm" runat="server" />

Następnie wymagana jest kontrolka DropDownList:

<div>
 Vendor: <asp:DropDownList ID="VendorsList" runat="server"/>
</div>

Dla tej listy dodawany jest rozszerzenie CascadingDropDown, udostępniając adres URL usługi internetowej i informacje o metodzie:

<ajaxToolkit:CascadingDropDown ID="ccd1" runat="server"
 ServicePath="CascadingDropdown2.cs.asmx" ServiceMethod="GetVendors"
 TargetControlID="VendorsList" Category="Vendor" />

Rozszerzenie CascadingDropDown następnie asynchronicznie wywołuje usługę internetową z następującym podpisem metody:

public CascadingDropDownNameValue[] MethodNameHere(string knownCategoryValues, string category)

Metoda zwraca tablicę typu CascadingDropDown. Konstruktor typu oczekuje najpierw podpis wpisu listy, a następnie wartości (atrybut HTMLvalue). Jeśli trzeci argument ma wartość true, element listy zostanie automatycznie wybrany w przeglądarce.

<%@ WebService Language="C#" Class="CascadingDropdown2" %>
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 CascadingDropdown2 : 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", true));
 l.Add(new CascadingDropDownNameValue(
 "Premier Sport, Inc.", "3"));
 return l.ToArray();
 }
}

Ładowanie strony w przeglądarce spowoduje wypełnienie listy rozwijanej trzema dostawcami, a druga jest wstępnie wybrana.

Lista jest wypełniona i wstępnie wybrana automatycznie

Lista jest wypełniana i wstępnie zaznaczona automatycznie (kliknij, aby wyświetlić obraz pełnowymiarowy)