一、属性

  1. AutoPostBack属性:用于设置当单击RadioButtonList控件时,是否自动回送到服务器。True表示回送;False(默认)表示不回送。
  2. DataSource属性:用于指定填充列表控件的数据源。
  3. DataTextField属性:用于指定DataSource中的一个字段,该字段的值对应于列表项的Text属性。
  4. DataValueField属性:用于指定DataSource中的一个字段,该字段的值对应于列表项的Value属性。
  5. 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控件中的选项。
  1. RepeatColumns属性:用于指定在RadioButtonList控件中显示选项占用几列。默认值为0,表示任意多列。
  2. RepeatDirection属性:用于指定RadioButtonList控件的显示方向。Vertical时,列表项以列优先排列的形式显示;Horizontal时,列项以行优先排列的形式显示。
  3. RepeatLayout属性:用于设置选项的排列方式。Table(默认)时,以表结构显示,属性值为Flow时,不以表结构显示。
  4. SelectedIndex属性:用于获取或设置列表中选定项的最低序号索引值。如果列表控件中只有一个选项被选中,则该属性表示当前选定项的索引值。
  5. SelectedItem属性:用于获取列表控件中索引值最小的选定项。如果列表中只有一个选项被选中,则该属性表示当前选定项。通过该属性可获得选定项的Text和Value属性值。
  6. TextAlign属性:用于指定列表中各项文本的显示位置。当该属性值为Right(默认)时,文本显示在单选按钮的右边;当属性值为Left时,文本显示在单选按钮的左边。

二、事件

SelectIndexChange事件:

当用户选择了列表中的任意选项时,都将引发SelectedIndexChange事件。

在RadioButtonList中没有隐藏ListItem的值的属性,但是有RadioButtonList.Items.Add和 RadioButtonList.Items.Remove属性,我们可以通过添加和删除来达到隐藏的效果。

  1. if (RadioButtonList.SelectedValue=="1")
  2. {
  3. RadioButtonList.Items.Add("明細");
  4. }
  5. else
  6. {
  7. RadioButtonList.Items.Remove(RadioButtonList.Items[index]);
  8. }

注意:如果没添加就删除或者删除后再删除这时候页面会出现报错。

三、动态赋值

动态的给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来解决上面的问题:

  1. 例如:
  1. DropDownList1.SelectedIndex = DropDownList1.Items.IndexOf(DropDownList1.Items.FindByValue("中国"));
  1. 这种方法在动态的赋值时先要检索控件列表中是否有匹配的数值,如果数据匹配则dropdownlist.text的值被赋为:“中国”,
  2. 如果通过FindByValue没有找到指定项则为null,而Items.IndexOf(null)会返回-1,这样我们就可以根据判断自动指出默认index的值了
  3. 这样就避免了异常的发生。

其他动态赋值代码:

  1. //遍历控件值跟数据库匹配进行选中控件
  2. //txtProjectAreaItemName:radiobuttonlist页面控件id
  3. //model.ProjectAreaItemName数据库中数据
  4. //txtProjectAreaItemName.Items[i].Value控件的value
  5. //txtProjectAreaItemName.Items[i].Text控件的Text
  6. for (int i = 0; i < txtProjectAreaItemName.Items.Count; i++)//获取item数量
  7. {
  8. if(model.ProjectAreaItemName.Contains(txtProjectAreaItemName.Items[i].Value))
  9. //跟数据库中数据进行比对,是否包含此选项
  10. {
  11. txtProjectAreaItemName.Items[i].Selected = true;
  12. break;
  13. }
  14. }