CascadingDropDown を使用して一覧に入力する (VB)
作成者: Christian Wenz
AJAX Control Toolkit の CascadingDropDown コントロールは、DropDownList コントロールを拡張して、ある DropDownList で変更が行われると、別の DropDownList にある関連付けられた値が読み込まれるようにします。 (たとえば、あるリストには米国の州の一覧があり、次のリストにはその州の主要都市がある場合です。)解決する最初の課題は、このコントロールを使ってドロップダウン リストを実際に設定することです。
概要
AJAX Control Toolkit の CascadingDropDown コントロールは、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 エクステンダー コントロールが追加されます。 それによって非同期要求を送信された Web サービスは、一覧に表示されるエントリのリストを返します。 これが動作するには、次の CascadingDropDown 属性を設定する必要があります。
ServicePath
: 一覧のエントリを提供する Web サービスの URLServiceMethod
: 一覧のエントリを提供する Web メソッドTargetControlID
: ドロップダウン リストの IDCategory
: 呼び出されたら 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()
そのため、重要な点は、メソッドが (ASP.NET AJAX Control Toolkit で定義されている) CascadingDropDownNameValue
型の配列を返す必要があるということです。 CascadingDropDownNameValue
コンストラクターでは、<option value="VALUE">NAME</option>
が HTML で行うのと同じように、最初に一覧のエントリのテキスト、次にその値を提供する必要があります。 サンプル データを次に示します。
<%@ 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 つのベンダーの設定がトリガーされます。
一覧が自動的に設定されます (クリックすると全画面の画像が表示されます)