一、属性
- AutoPostBack属性:用于设置当单击RadioButtonList控件时,是否自动回送到服务器。True表示回送;False(默认)表示不回送。
- DataSource属性:用于指定填充列表控件的数据源。
- DataTextField属性:用于指定DataSource中的一个字段,该字段的值对应于列表项的Text属性。
- DataValueField属性:用于指定DataSource中的一个字段,该字段的值对应于列表项的Value属性。
- Items属性:表示列表中各个选项的集合,如RadioButtonList1.Items(i)表示第i个选项,i从0开始。每个选项都有以下3个基本属性:
- Text属性:表示每个选项的文本。
- Value属性:表示每个选项的选项值。
- Selected属性:表示该选项是否被选中。
- Count属性:通过Items.Count属性可获得RadioButtonList控件的选项数;
- Add方法:通过items.Add方法可以向RadioButtonList控件添加选项;
- Remove方法:通过items.Remove方法,可从RadioButtonList控件中删除指定的选项;
- Insert方法:通过items.insert方法,可将一个新的选项插入到RadioButtonList控件中;
- Clear方法:通过items.clear方法可以清空RadioButtonList控件中的选项。
- RepeatColumns属性:用于指定在RadioButtonList控件中显示选项占用几列。默认值为0,表示任意多列。
- RepeatDirection属性:用于指定RadioButtonList控件的显示方向。Vertical时,列表项以列优先排列的形式显示;Horizontal时,列项以行优先排列的形式显示。
- RepeatLayout属性:用于设置选项的排列方式。Table(默认)时,以表结构显示,属性值为Flow时,不以表结构显示。
- SelectedIndex属性:用于获取或设置列表中选定项的最低序号索引值。如果列表控件中只有一个选项被选中,则该属性表示当前选定项的索引值。
- SelectedItem属性:用于获取列表控件中索引值最小的选定项。如果列表中只有一个选项被选中,则该属性表示当前选定项。通过该属性可获得选定项的Text和Value属性值。
- TextAlign属性:用于指定列表中各项文本的显示位置。当该属性值为Right(默认)时,文本显示在单选按钮的右边;当属性值为Left时,文本显示在单选按钮的左边。
二、事件
SelectIndexChange事件:
当用户选择了列表中的任意选项时,都将引发SelectedIndexChange事件。
在RadioButtonList中没有隐藏ListItem的值的属性,但是有RadioButtonList.Items.Add和 RadioButtonList.Items.Remove属性,我们可以通过添加和删除来达到隐藏的效果。
if (RadioButtonList.SelectedValue=="1")
{
RadioButtonList.Items.Add("明細");
}
else
{
RadioButtonList.Items.Remove(RadioButtonList.Items[index]);
}
注意:如果没添加就删除或者删除后再删除这时候页面会出现报错。
三、动态赋值
动态的给radiobuttonlist 或者dropdownlist 赋值时 如果所赋的数值 在控件的列表中不存在时 往往会发生异常 System.ArgumentOutOfRangeException: “DropDownList1”有一个无效 SelectedValue,因为它不在项目列表中)
例如 dropdownlist1中用”111,222,333”,如果复制dropdownlist1.text=”444”dropdownlist1.selectedvalue=”444”时就会出现前面的异常。
但是有时候这种异常没有出现,那是因为我们没有用到dropdownlist或radiobuttonlist控件的(IsPostBack)indexchange事件,当控件需要事件时上面的错误异常就会被捕获。这是因为SelectedValue 属性还可以用于选择列表控件中的某一项,方法是用该项的值设置此属性。如果列表控件中的任何项都不包含指定值,则会引发 System.ArgumentOutOfRangeException。
同样这样 if ( DropDownList1.Items.FindByValue(“中国”).Selected)也会出现异常。
我们可以用selectedindex来解决上面的问题:
例如:
DropDownList1.SelectedIndex = DropDownList1.Items.IndexOf(DropDownList1.Items.FindByValue("中国"));
这种方法在动态的赋值时先要检索控件列表中是否有匹配的数值,如果数据匹配则dropdownlist.text的值被赋为:“中国”,
如果通过FindByValue没有找到指定项则为null,而Items.IndexOf(null)会返回-1,这样我们就可以根据判断自动指出默认index的值了
这样就避免了异常的发生。
其他动态赋值代码:
//遍历控件值跟数据库匹配进行选中控件
//txtProjectAreaItemName:radiobuttonlist页面控件id
//model.ProjectAreaItemName数据库中数据
//txtProjectAreaItemName.Items[i].Value控件的value
//txtProjectAreaItemName.Items[i].Text控件的Text
for (int i = 0; i < txtProjectAreaItemName.Items.Count; i++)//获取item数量
{
if(model.ProjectAreaItemName.Contains(txtProjectAreaItemName.Items[i].Value))
//跟数据库中数据进行比对,是否包含此选项
{
txtProjectAreaItemName.Items[i].Selected = true;
break;
}
}