服务器控件<ASP:listbox>类似于下拉列表控件,但该控件不能下拉,它允许选择多个选项。<asp:listbox>控件的语法如下所示:
<ASP:listbox id="list1" runat="server" selection mode = "multiple">
<ASP:listitem>Madrid</asp:listitem >
<ASP:listitem >Oslo</asp:listitem >
<ASP:listitem >Lisbon</asp:listitem >
</ASP:listbox>
属性selectionmode用于确定从列表框中可以选择一个选项还是多个选项。在默认情况下,只能进行单选。下面修改前面的例子,使用列表框,允许用户进行多选。
试一试:使用<ASP:listbox>控件
(1) 在文件夹ch03中创建TIO-ListBox.ASPx文件,输入下列代码:
<script runat="server" language="vb">
Sub Page_Load()
If Page.IsPostBack Then Dim msg As String
If list1.Items(0).Selected Then msg = msg & list1.Items(0).Text & "<br />"
If list1.Items(1).Selected Then msg = msg & list1.Items(1).Text & "<br />"
If list1.Items(2).Selected Then msg = msg & list1.Items(2).Text & "<br />"
If msg<>"" then
Message.Text = "You have selected: <br />" & msg
Else
Message.Text =""
End If
End Sub
</script>
<HTML>
<head>
<title>List Box Example</title>
</head>
<body>
<ASP:label id="Message" runat="server"/> <br />
Which city do you wish to look at hotels for?<br />
<form runat="server">
<ASP:listbox id="list1" runat="server" selectionmode="multiple">
<ASP:listitem>Madrid</asp:listitem>
<ASP:listitem>Oslo</asp:listitem>
<ASP:listitem>Lisbon</asp:listitem>
</ASP:listbox> <br />
<input type="Submit">
</form>
</body>
</HTML>
(2) 在浏览器中运行此页面,并通过Ctrl、Shift键选择多个项。单击Submit Query按钮,得到如图3-6所示的结果。

图 3-6
代码的说明
这个例子中的控件只对前面的TIO-DropDownList.ASPx例子做了非常小的修改,把DropDown改为ListBox,设置selectionmode属性以允许选择多个选项:
<ASP:listbox id="list1" runat="server" selectionmode="multiple">
为了选择多个城市,必须对ASP.NET代码作彻底的修改。建立一个列表,在变量msg中显示,代码如下:
Dim msg As String = "You have selected: <br />"
接着对每个可选的城市,都要检查该城市是否已被选中,如果选中了,就把该城市名添加到msg变量中。这里的技巧是理解在列表框中选项是经过编号(索引)的,如果某些选项被选中,就把selected属性设置为TRUE。最后把变量msg的值(文本字符串和HTML)赋予message标签的Text属性,让它在页面上显示。这比处理一个选项复杂,但会得到需要的输出。
