<ASP:radiobuttonlist>控件的工作方式与其对应的HTML窗体控件或Windows界面相同。选择一个按钮后,就会取消同一组中另一个按钮的选择。注意整个组的标识符仅在<ASP:radiobuttonlist>控件的id属性中设置,其语法是很简单的:
<ASP:radiobuttonlist id="radio1" runat="server">
<ASP:listitem id="option1" runat="server" value="A" />
<ASP:listitem id="option2" runat="server" value="B" />
<ASP:listitem id="option3" runat="server" value="C" />
</ASP:radiobuttonlist>
检查radSample.SelecteditemValue,就可以编程确定用户选择了哪个选项,如"option A"。
在下面的例子中,将通过一组单选按钮决定用户在HTML窗体上选择了哪一目的地,并将所做的选择显示给用户。
试一试:使用<ASP:radiobutton>控件
(1) 在ch03文件夹中创建TIO-RadioButtonList.ASPx,输入以下代码:
<script runat="server" language="vb">
Sub Page_Load()
if Page.IsPostBack then
Message.Text = "You have selected the following: " + radCity.SelectedItem.Value
end if
End Sub
</script>
<HTML>
<head>
<title>Radio Button List Example</title>
</head>
<body>
<ASP:label id="Message" runat="server" />
<br /><br />
Which city interests you? <br /><br />
<form runat="server">
<ASP:radiobuttonlist id="radCity" runat="server">
<ASP:listitem id="optMadrid" runat="server" value="Madrid" />
<ASP:listitem id="optOslo" runat="server" value="Oslo" />
<ASP:listitem id="optLisbon" runat="server" value="Lisbon" />
</ASP:radiobuttonlist><br /><br />
<input type="Submit">
</form>
</body>
</HTML>
(2) 在浏览器中观看页面,如图3-8所示,选择某一城市,并单击Submit Query按钮。

图 3-8
代码的说明
TIORadioButtonList.ASPx页面有3个单选按钮,它们位于ID为radCity的组中。注意每个选项使用了不同的ID和值:
<form runat="server">
<ASP:radiobuttonlist id="radCity" runat="server">
<ASP:listitem id="optMadrid" runat="server" value="Madrid" />
<ASP:listitem id="optOslo" runat="server" value="Oslo" />
<ASP:listitem id="optLisbon" runat="server" value="Lisbon" />
</ASP:radiobuttonlist><br />
<input type="Submit">
</form>
在页面顶部的ASP.NET代码中,我们在Sub Page_Load()和End Sub语句之间使用熟悉的3行代码从窗体返回用户信息。使用与<ASP:listbox>类似的方式,读取SelectedItem.Value值,获取所选的选项信息:
if Page.IsPostBack then
Message.Text = "You have selected " + radCity.SelectedItem.Value
end if
选择某一单选按钮后,message标签的文本就设置为"You have selected"后跟SelectedItem. Value返回的用户选择。
复选框与单选按钮类似,允许用户从一组按钮中进行多个选择。但是,<ASP:checkbox>只允许选择一个选项(“愿意为快速购物付出比$5更多的价钱吗?”),而<ASP:checkboxlist>允许用户选择多个选项(“可以给您发送那些免费产品:运动、服装、鞋子?”)。复选框和单选按钮的另一个根本区别是,一旦选择了一个复选框,还可以再次单击它,取消选择。
<ASP:radiobuttonlist>例子中的大多数规则都可应用于复选框。主要区别是语法:单选按钮使用“options”,而复选框使用“listitems”。
一个<ASP:checkbox>有一个ID:
<ASP:checkbox id="chkQuickShipping" runat="server" />
如果希望使用多个复选框,可以将它们包含在<ASP:checkboxlist>控件中。此时需要为<ASP:checkboxlist>控件本身设置id属性,并为控件中的每一个选项创建<ASP:listitem>控件,如下面的代码所示:
<ASP:checkboxlist id="chkCatalogs" runat="server">
<ASP:listitem id="Sports" runat="server" value="Sports" />
<ASP:listitem id="itmClothes" runat="server" value="Clothes" />
<ASP:listitem id="itmShoes" runat="server" value="Shoes" />
</ASP:checkboxlist>
下面的例子对上例进行了修改,使用已建立的假日选项,让用户能对目的地进行多个选择。
试一试:使用<ASP:checkbox>控件
(1) 打开TIO-RadioButtonList.ASPx,把它保存为ch03文件夹下的TIO-CheckBoxList.ASPx并修改代码,如下面加底纹的代码所示:
<script runat="server" language="vb">
Sub Page_Load()
Dim msg As String = "You have selected the following items:<br />"
If chkCities.Items(0).Selected Then msg = msg & chkCities.Items(0).Text & "<br />"
If chkCities.Items(1).Selected Then msg = msg & chkCities.Items(1).Text & "<br />"
If chkCities.Items(2).Selected Then msg = msg & chkCities.Items(2).Text & "<br />"
lblCities.Text = msg
End Sub
</script>
<HTML>
<head>
<title>Check Box List Example</title>
</head>
<body>
<ASP:label id="lblCities" runat="server" /><br /><br />
Which city do you wish to look at hotels for? <br /><br />
<form runat="server">
<ASP:checkboxlist id=" chkCities " runat="server">
<ASP:listitem id="optMadrid " runat="server" value="Madrid" />
<ASP:listitem id="optOslo " run at="server" value="Oslo" />
<ASP:listitem id="optLisbon " value="Lisbon" />
</ASP:checkboxlist> <br /><br />
<input type="Submit">
</form>
</body>
</HTML>
(2) 在浏览器中打开TIO-CheckBoxList.ASPx,如图3-9所示,选择多个选项,单击Submit Query按钮。

图 3-9
代码的说明
本例所用代码只对页面做了一些小改动:即将HTML控件改为<ASP:checkboxlist>控件,同时改变了控件的ID,注意在复选框组中,选项用listitem标记,而不是options。
ASP.NET代码与前面的TIO-ListBox.ASPx例子相同,但本例所指的是复选框,而不是列表框。语法也作了修改,在msg值的最后添加了城市名。注意可以使用语法msg+=,获得与msg=msg &相同的效果:
Sub Page_Load()
Dim msg As String = "You have selected the following items:<br />"
If chkCities.Items(0).Selected Then msg = msg & chkCities.Items(0).Text & "<br />"
If chkCities.Items(1).Selected Then msg = msg & chkCities.Items(1).Text & "<br />"
If chkCities.Items(2).Selected Then msg = msg & chkCities.Items(2).Text & "<br />"
lblCities.Text = msg
End Sub
其中包含了一组基本的ASP.NET服务器控件。注意所有的控件都以<ASP:>开头,都包含属性runat="server",每个控件都有一个ID。前面还介绍了如何使用它们从用户处收集信息,并在代码中利用这些信息。在许多页面中都使用了变量。例如,单选按钮和复选框页面中的msg,还使用了控制结构如IF THEN。
在学习其他ASP.NET功能之前,先详细讨论一下如何在ASP.NET中使用变量。之后深入探讨在已使用的逻辑中的控制结构。