详解ASP.net的CheckBox跟CheckBoxList控件
纯手写,难免出错,大家共同学习,其中有错误还望大家点出来及时修改以免误人子弟。
CheckBox和CheckBoxList控件其实就像一对孪生兄弟般,他们同是复选框控件。只是后者弥补了前者使用效率低的缺陷罢了。
先说下CheckBox控件
重要的属性:
Checked 获取或设置复选框是否处于选中状态,选中则为True
Text 获取或设置Checkbox控件的文本内容
AutoPostBack 表明是否自动上传窗体数据到服务器
事件:
OnCheckedChanged 当Checked属性的值变化时触发
代码:
html:
<asp:CheckBox ID="CB1" runat="server" Text="汤姆克鲁斯" OnCheckedChanged="CheckBox_Click" AutoPostBack="true"></asp:CheckBox>
<asp:CheckBox ID="CB2" runat="server" Text="约翰尼德普" OnCheckedChanged="CheckBox_Click"
AutoPostBack="true"></asp:CheckBox>
<asp:CheckBox ID="CB3" runat="server"
Text="威尔斯密斯" OnCheckedChanged="CheckBox_Click" AutoPostBack="true"></asp:CheckBox>
<asp:CheckBox
ID="CB4" runat="server" Text="布拉德皮特" OnCheckedChanged="CheckBox_Click" AutoPostBack="true"></asp:CheckBox>
<asp:Literal ID="Literal1" runat="server"></asp:Literal>
这里看出他们的oncheckedchanged事件是一样的,因为这里要同时对着四个独立的复选框控件进行"监控"。
C#:
protected void CheckBox_Click(object sender,EventArgs e)
{
string myFavoriteStar = "";
if(CB1.Checked)myFavoriteStar+="汤姆克鲁斯";
if(CB2.Checked)myFavoriteStar+="约翰尼德普";
if(CB3.Checked)myFavoriteStar+="威尔史密斯";
if(CB4.Checked)myFavoriteStar+="布拉德皮特";
Literal.Text = "你最喜欢的明星是:"+myFavoriteStar;
}
再说下CheckBoxList控件,它其实是CheckBox的控件组。在这里注意一定要用ListItem产生控件内的选项,而不是再用text了。
重要属性:
AutoPostBack 和上面一样,不作赘述
RepeatColumns 获取或设置显示项的列数,默认为0
RepeatDirection
列表的排列方式。默认垂直排列(veritcal),还可以是水平排列(horizontal)
RepeatLayout 获取或设置控件的配置方式。默认是table
DataSource
DataTextField 这3者都跟数据绑定有关,这里不作介绍
DataValueField
Items
表示各个项的集合
SelectedItem
获取目前的选择项(ListItem对象),如果多个选择,则返回多个选择中最小下标项
SelectedIndex
获取目前选择项的下标。如果多个选择,返回选择项的最小下标
事件:
OnSelectedIndexChanged
当选择的项发生改变时会触发,此事件要与AutoPostBack属性配合使用
代码:
html:
<asp:CheckBoxList ID="CBL1" runat="server" AutoPostBack="true" OnSelectedIndexChanged = "CheckBox_Click">
<asp:ListItem>汤姆克鲁斯</asp:ListItem>
<asp:ListItem>汤姆汉克斯</asp:ListItem>
<asp:ListItem>克里斯蒂安贝尔</asp:ListItem>
<asp:ListItem>莱奥纳多迪卡普里奥</asp:ListItem>
</asp:CheckBoxList>
<asp:Literal ID="Literal1" runat="server"></asp:Literal>
C#:
protected void CheckBox_Click(object sender,EventArgs e)
{
string myFavoriteStar = "";
for(int i=0;i<=CBL1.Items.Count;i++)
{
if(CBL1.Item[i].Selected)
myFavoriteStar += CBL1.Item[i].Value+" ";
}
Literal1.Text = "你最喜欢的演员是:"+ myFavoriteStar;
}
注意到蓝色的部分,这里与checkbox的checked属性进行比较,两者表示选中的属性是不同的。