CheckBox控件和CheckBoxList控件
可以使用两种类型的 ASP.NET 控件将复选框添加到 Web 窗体页上:单独的 CheckBox 控件或 CheckBoxList 控件。两种控件都为用户提供了一种输入布尔型数据(真或假、是或否)的方法。
可以向网页中添加单独的 CheckBox 控件,然后分别进行处理。换句话说, CheckBoxList 控件则是单个控件,可作为一组复选框列表项的父控件。由于该控件源自 ListControl 基类,因此其作用非常类似于 ListBox 控件、DropDownList 控件、RadioButtonList 控件 和 BulletedList 控件。因此,使用 CheckBoxList 控件的许多过程与使用其他列表 Web 服务器控件的过程相同。
每类控件都有各自的优点。与使用 CheckBoxList 控件相比,使用各个 CheckBox 控件可以更好地控制网页上复选框的布局。例如,可以在每个复选框之间包含文本(即,非复选框的文本)。也可以控制各个复选框的字体和颜色。
如果想用数据库中的数据创建一系列复选框,则选用 CheckBoxList 控件更为理想。(您仍可以将各个 CheckBox 控件绑定到数据。)
CheckBox控件属性
ID: 简写为chkbx
AutoPostBack:获取或设置一个值,该值显示单击时控件的状态是否自动回发到服务器
Checked:获取或设置一个值,该值显示是否已选中,选中则为True,未选中则为False
Text:与复选框一起显示的文本标签,控件的文本内容
CheckChanged:控件的值改变时,发送到服务器
向网页中添加 CheckBox 控件
-
将 CheckBox 控件从“工具箱”面板拖到网页上。
-
通过设置“ Text ”属性来指定标题。
-
(可选)通过设置“ TextAlign ”属性来更改标题的方向。
当 CheckBox 控件向浏览器呈现时将分为两部分:表示复选框的 input 元素和表示复选框标题的单独 label 元素。这两个元素的组合依次包含在 span 元素中。
在对 CheckBox 控件应用样式或属性设置时,设置将应用于外部的 span 元素。例如,如果设置了控件的“ BackColor ”属性,此设置将应用于 span 元素,因此对其内部的 input 和 label 属性均有影响。
CheckBoxList控件属性
ID:简写为chkbxlst
AutoPostBack:和CheckBox属性相同
ListItem:和CheckBox中Text不同的是CheckBoxList中添加文本为编辑项,鼠标点击控件会出现小箭头,点击后 有编辑项,在ListItem需要添加成员,成员有Enabled、Selected、Text和Value属性
Items:获取列表控件项的集合
事件:OnSelectedIndexChanged 当选择的项发生改变时会触发,此事件要与AutoPostBack属性配合使用
向网页中添加 CheckBoxList 控件
-
将 CheckBoxList 控件从“工具箱”面板拖到网页上。
当使用 CheckBoxList 控件时,将向网页添加单个控件。向控件添加项是一个独立的过程,它取决于要在控件中显示的是一个静态列表,还是从数据源动态生成的列表。
为 CheckBoxList 控件定义静态项
-
在“设计”视图中,右键单击 CheckBoxList 控件,再单击“显示常用控制任务”。
-
在“CheckBoxList 任务”菜单上,单击“编辑项”。
-
在“ListItem 集合编辑器”对话框中,单击“添加”添加一项。
-
在“ListItem 属性”区域中,设置 Text 和 Value 属性。
-
重复步骤 3 和步骤 4,直到添加了所有需要的项。
将 CheckBoxList 控件绑定到数据源
-
在“设计”视图中,右键单击 CheckBoxList 控件,再单击“显示常用控制任务”。
-
在“CheckBoxList 任务”菜单上,单击“选择数据源”。
-
在“数据源配置向导”中,从“选择数据源”下拉列表中为“CheckBoxList”控件选择数据源。在“选择要显示在 CheckBoxList 中的数据域”下拉列表中,选择包含用户将看到的文本所对应的域。在“选择 CheckBoxList 的值所对应的数据域”下拉列表中,选择用户通过选择列表中的项以编程方式访问的数据所对应的区域。
代码
//1.遍历items集合中每一项,将CheckBox的状态赋值给集合中的每一项
foreach (ListItem l in this.chkbxlst.Items)
{
l.Selected = this.chkbx.Checked;
}
//2.统计checkboxlist 的选中Items个数
int count = this.chkbxlst.Items.Cast<ListItem>().Count(p=>p.Selected);
//3.比较checkboxlist的选中Items个数和checkboxlist的Items的个数是否相等,并将结果赋值给全选CheckBox
this.chkbx.Checked=(count==this.chkbxlst.Items.Count);