详解ASP.net的CheckBox跟CheckBoxList控件

详解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属性进行比较,两者表示选中的属性是不同的。