AJAX コントロール ツールキットの CascadingDropDown コントロールは、DropDownList コントロールを拡張して、ある DropDownList の変更によって関連付けられた値が別の DropDownList に読み込まれるようにします。 (たとえば、1 つのリストに米国の州の一覧が表示され、次のリストにはその州の主要都市が表示されます)。解決する最初の課題は、このコントロールを使用してドロップダウン リストを実際に入力することです。
概要
AJAX コントロール ツールキットの CascadingDropDown コントロールは、DropDownList コントロールを拡張して、ある DropDownList の変更によって関連付けられた値が別の DropDownList に読み込まれるようにします。 (たとえば、1 つのリストに米国の州の一覧が表示され、次のリストにはその州の主要都市が表示されます)。解決する最初の課題は、このコントロールを使用してドロップダウン リストを実際に入力することです。
手順
ASP.NET AJAX と Control Toolkit の機能をアクティブにするには、 ScriptManager コントロールをページ上の任意の場所 (ただし、 <form> 要素内) に配置する必要があります。
<asp:ScriptManager ID="asm" runat="server" />
次に、DropDownList コントロールが必要です。
<div>
Vendor: <asp:DropDownList ID="VendorsList" runat="server" />
</div>
この一覧では、CascadingDropDown エクステンダーが追加されます。 非同期要求が Web サービスに送信され、その後、リストに表示されるエントリの一覧が返されます。 これを機能させるには、次の CascadingDropDown 属性を設定する必要があります。
-
ServicePath: リスト エントリを配信する Web サービスの URL -
ServiceMethod: リスト エントリを配信する Web メソッド -
TargetControlID: ドロップダウン リストの ID -
Category: 呼び出されたときに Web メソッドに送信されるカテゴリ情報 -
PromptText: サーバーからリスト データを非同期的に読み込むときに表示されるテキスト
CascadingDropDown要素のマークアップを次に示します。 C# と VB の唯一の違いは、関連付けられている Web サービスの名前です。
<ajaxToolkit:CascadingDropDown ID="ccd1" runat="server"
ServicePath="CascadingDropdown0.vb.asmx" ServiceMethod="GetVendors"
TargetControlID="VendorsList" Category="Vendor" />
CascadingDropDown エクステンダーから取得した JavaScript コードは、次のシグネチャを使用して Web サービス メソッドを呼び出します。
Public Function MethodNameHere(ByVal knownCategoryValues As String, ByVal category As String) As CascadingDropDownNameValue()
したがって、重要な側面は、メソッドが CascadingDropDownNameValue 型の配列を返す必要があるということです (ASP.NET AJAX コントロール ツールキットによって定義されます)。
CascadingDropDownNameValueコンストラクターでは、HTML で行うのと同じように、最初にリスト エントリのテキストとその値<option value="VALUE">NAME</option>指定する必要があります。 サンプル データを次に示します。
<%@ 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
ブラウザーでページを読み込むと、一覧に 3 つのベンダーが表示されます。
リストが自動的に入力されます (フルサイズの画像を表示する場合にクリックします)