DropDownList控件。该控件就是我们以前用过的下拉列表, 在Windows Form里叫CoboBox, 也是一个经常使用的控件。下面是该控件对应的HTML代码:
<asp:DropDownList ID="dList" runat="server">
<asp:ListItem>北京</asp:ListItem>
<asp:ListItem>上海</asp:ListItem>
<asp:ListItem>广州</asp:ListItem>
</asp:DropDownList>
可以看出一个下拉列表里有很多项,这些项都是由其子标签来定义的,你可以在属性窗口中通过其Items属性添加这些项
其中Text属性指定在列表中显示的文本, 通过Selected属性可以设置该项为默认选中项:对于属性Value, 你可以设置此属性可使你将该值与特定的项关联而不显示该值。例如,你可以将Text属性设置为美国某个州的名称, 而将Value属性设置为该州的邮政区名缩写。Web版的下拉列表也有SelectedIndexChanged事件,我们也可以通过其SelectedItem属性获得当前选中的项,下面代码是使用该控件的情况;
protected void btnOk_Click(object sender, EventArgs e)
{
//获取选中项的文本
string sitem=this.dList.SelectedItem.Text;
//获取选中项对应的值, 就是Value属性设置的那个
string svalue=this.dList.SelectedValue;
}
跟下拉列表非常相似的一个控件是普通列表框(ListBox) , 它们两个唯一的区别就是前者只能选择一项, 而后者可以选择单个或多个选项。ListBox也是通过Items集合属性来添加其项目, 通过SelectedItem来获得当前选中的项目, 其对应的HTML代码如下:
<asp:ListBox ID="ListBoxl"runat="server">
<asp:ListItem>北京</asp:ListItem>
<asp:ListItem>上海</asp:ListItem>
<asp:ListItem>广州</asp:ListItem>
</asp:ListBox>
对于ListBox默认情况下也是单选, 你可以通过其“SelectionMode”属性将其设置为多选, 获得多选模式下的项目不太容易, 你需要遍历控件的Items集合, 分别测试每一项的Selected属性, 所有Selected属性为true的项目就是你选中的那些项目。下面的示例演示了如何获得名称为“ListBox1”的ListBox控件的所选内容:
protected void btnOk_Click(object sender,EventArgs e)
{
string msg=string.Empty;
foreach(ListItem li in this.myListBox.Items)
{
if(li.Selected==true)
{
msg+="<BR><FONT color=red>"+li.Text+"被选中</FONT>";
}
}
this.myLabel.Text=msg;
}
上面的代码中“<BR>”、“<FONT>”等都是标准的HTML标签, 我们在介绍HTML标签时已经介绍过。你可以给控件设置带有HTML标签内容的文本, 这些HTML标签将被浏览器解析, 会显示按照标签设定的内容, 而不是显示标签本身。对于这种用法你不要奇怪, 就当语法记住即可, 在进行Web编程时要注意这些Windows Form中不同的用法。
Calendar控件
日历控件,可以用于显示日期或对日期进行选择(包括选择日期范围):
<asp:Calendar ID="myCalendar" runat="server"></asp:Calendar>
该控件默认情况下突出显示本机当前日期,你也可以设置SelectedDate属性, 使某个特定的日期在控件中突出显示。选择日期方法, 该控件支持单选和多选, 通过获取或设置Calendar控件的SelectionMode属性可以指定用户选择单日、一周还是整月。当该属性被设置为整周(DayWeek)或整月(DayWeekMonth)时, 将在Calendar控件的第一列中显示包含周和月份选择控件的附加的选择器列,点击该列选器就可以选中该周或该月。如果用户已选定单个日期,则可以通过SelectedDate属性返回当前选中的日期, 如果选择一周或一月,那么需要通过SelectedDates属性来获得选定日期的集合。下面代码显示了怎样获得选中的日期:
protected void btnOk_Click(object sender, EventArgs e)
//获得单选的日期
this.myLabel.Text=this.myCalendar.SelectedDate.ToShortDateString();
//获得多选的时期
string dates=string.Empty;
foreach(DateTime dt in myCalendar.SelectedDates)
{
dates+="<BR>"+dt.ToShortDateString();
}
this.myLabel.Text=dates;
}