软件开发视频大讲堂:ASP.NET从入门到精通(第4版)
上QQ阅读APP看书,第一时间看更新

3.3 选择类型控件

3.3.1 ListBox控件

1.ListBox控件概述

ListBox控件用于显示一组列表项,用户可以从中选择一项或多项。如果列表项的总数超出可以显示的项数,则ListBox控件会自动添加滚动条。如图3.21所示为ListBox控件。

图3.21 ListBox控件

1)ListBox控件的常用属性

ListBox控件的常用属性及说明如表3.14所示。

表3.14 ListBox控件的常用属性及说明

下面主要介绍ListBox控件的Items、SelectionMode和DataSource属性。

(1)Items属性

Items属性主要是用来获取列表控件的集合,使用Items属性为ListBox控件添加列表项的方法有两种,下面分别进行介绍。

通过属性面板为ListBox控件添加列表项

首先,打开属性面板,单击Items属性后面的按钮,会弹出一个如图3.22所示的“ListItem集合编辑器”对话框。

图3.22 “ListItem集合编辑器”对话框

在“ListItem集合编辑器”对话框中,可以通过单击“添加”按钮,为ListBox控件添加列表项,可以选中该列表项,在属性面板中修改其属性值。当为ListBox控件添加完列表项后,还可以选中列表项,单击↑和↓按钮更改列表项的位置,单击“移除”按钮可以从列表项中将该项删除,如图3.23所示。

图3.23 添加列表项

最后,单击“确定”按钮,返回到页面中,在ListBox控件中将会呈现已添加的列表项。

使用Items.Add方法为ListBox控件添加列表项

在后台代码中,可以编写如下代码,使用Items.Add方法为ListBox控件添加列表项。

        lbxSource.Items.Add("星期日");
        lbxSource.Items.Add("星期一");
        lbxSource.Items.Add("星期二");
        lbxSource.Items.Add("星期三");
        lbxSource.Items.Add("星期四");
        lbxSource.Items.Add("星期五");
        lbxSource.Items.Add("星期六");

(2)SelectionMode属性

SelectionMode属性是ListBox列表控件的选择模式,该属性的设置选项有以下两种。

单选(Single):用户只能在列表框中选中一项。

多选(MultiLine):用户可以在列表框中选中多项。

(3)DataSource属性

使用DataSource属性可以从数组或集合中获取列表项并将其添加到控件中。当编程人员希望从数组或集合中填充控件时,可以使用此属性。例如,在后台代码中编写如下代码,将数组绑定到ListBox控件中。

        ArrayList arrList = new ArrayList();
        arrList.Add("星期日");
        arrList.Add("星期一");
        arrList.Add("星期二");
        arrList.Add("星期三");
        arrList.Add("星期四");
        arrList.Add("星期五");
        arrList.Add("星期六");
        ListBox1.DataSource = arrList;
        ListBox1.DataBind();

注意

在使用ArrayList类数组之前,需要引用ArrayList类的命名空间,其引用代码为“using System. Collections”。

2)ListBox控件常用的方法

ListBox控件的常用方法是DataBind。当ListBox控件使用DataSource属性附加数据源时,可使用DataBind方法将数据源绑定到ListBox控件上。

2.ListBox控件选项的多选和单选操作

【例3.9】 ListBox控件选项的多选和单选操作。(示例位置:TM\sl\03\09

本示例实现的主要功能是对ListBox控件中的列表项进行多选和单选操作。执行程序,示例运行结果如图3.24所示,在源列表框中选择部分选项,单击“<”按钮后,将会把源列表框中选择的项移到目的列表框中,运行结果如图3.25所示。

图3.24 ListBox控件(选择前)

图3.25 ListBox控件(选择后)

程序实现的主要步骤如下。

(1)新建一个网站,默认主页为Default.aspx。

(2)在Default.aspx页面上添加2个ListBox控件和4个Button按钮,其属性设置及用途如表3.15所示。

表3.15 Default.aspx页面中控件的属性设置及用途

如果需要将源列表框中的选项全部移到目的列表框中,可以单击“<<”按钮。“<<”按钮的Click事件代码如下:

        protected void Button1_Click(object sender, EventArgs e)
          {
              //获取列表框的选项数
              int count = lbxSource.Items.Count;
              int index = 0;
              //循环从源列表框中转移到目的列表框中
              for (int i = 0; i < count; i++)
              {
                  ListItem Item = lbxSource.Items[index];
                  lbxSource.Items.Remove(Item);
                  lbxDest.Items.Add(Item);
              }
              //获取下一个选项的索引值
              index++;
          }

如果需要将源列表框中的部分选项移到目的列表框中,可以单击“<”按钮。“<”按钮的Click事件代码如下:

        protected void Button3_Click(object sender, EventArgs e)
          {
              //获取列表框的选项数
              int count = lbxSource.Items.Count;
              int index = 0;
              //循环判断各个项的选中状态
              for (int i = 0; i < count; i++)
              {
                ListItem Item = lbxSource.Items[index];
                //如果选项为选中状态,则从源列表框中删除并添加到目的列表框中
                if (lbxSource.Items[index].Selected == true)
                {
                    lbxSource.Items.Remove(Item);
                    lbxDest.Items.Add(Item);
                    //将当前选项索引值减1
                    index--;
                }
                //获取下一个选项的索引值
                index++;
              }
          }

注意

(1)在列表框中,通过按Shift键或Ctrl键,可以进行多项选择。

(2)单击页面中的“<”按钮和“>”按钮,可以将选中的项目移动到指定的列表框中;单击页面中的“<<”按钮与“>>”按钮,所有项目都将移到指定的列表框中。

3.ListBox控件选项的上移和下移操作

【例3.10】 ListBox控件选项的上移和下移操作。(示例位置:TM\sl\03\10

本示例实现的主要功能是对ListBox控件中的列表选项进行上移和下移操作。执行程序,示例运行结果如图3.26所示,在列表框中选中最后一项,单击“上移”按钮后,选中的选项将会向上移动,运行结果如图3.27所示。

图3.26 ListBox控件(上移前)

图3.27 ListBox控件(上移后)

程序实现的主要步骤如下。

(1)新建一个网站,默认主页为Default.aspx。

(2)在Default.aspx页面上添加1个ListBox控件和4个Button按钮,其属性设置及用途如表3.16所示。

表3.16 Default.aspx页面中控件的属性设置及用途

如果需要将列表框中选中的项上移,可以单击“上移”按钮。“上移”按钮的Click事件代码如下:

        protected void Button1_Click(object sender, EventArgs e)
            {
              //若不是第1行则上移
              if (lbxSource.SelectedIndex > 0 && lbxSource.SelectedIndex <= lbxSource.Items.Count -1)
              {
                  //记录当前选项的值
                  string name = lbxSource.SelectedItem.Text;
                  string value = lbxSource.SelectedItem.Value;
                  //获取当前选项的索引号
                  int index = lbxSource.SelectedIndex;
                  //交换当前选项和其前一项的索引号
                  lbxSource.SelectedItem.Text = lbxSource.Items[index -1].Text;
                  lbxSource.SelectedItem.Value = lbxSource.Items[index -1].Value;
                  lbxSource.Items[index -1].Text = name;
                  lbxSource.Items[index -1].Value = value;
                  //设定上一项为当前选项
                  lbxSource.SelectedIndex--;
              }
            }

如果需要将列表框中选中的选项向下移动,可以单击“下移”按钮。“下移”按钮的Click事件代码如下:

        protected void Button2_Click(object sender, EventArgs e)
            {
              //若不是最后一行则下移
              if (lbxSource.SelectedIndex >= 0 && lbxSource.SelectedIndex < lbxSource.Items.Count -1)
              {
                  //保存当前选项的信息
                  string name = lbxSource.SelectedItem.Text;
                  string value = lbxSource.SelectedItem.Value;
                  //获取当前选项的索引号
                  int index = lbxSource.SelectedIndex;
                  //交换当前选项与下一项的信息
                  lbxSource.SelectedItem.Text = lbxSource.Items[index + 1].Text;
                  lbxSource.SelectedItem.Value = lbxSource.Items[index + 1].Value;
                  lbxSource.Items[index + 1].Text = name;
                  lbxSource.Items[index + 1].Value = value;
                  //设定下一项为当前选项
                  lbxSource.SelectedIndex++;
              }
            }

3.3.2 DropDownList控件

1.DropDownList控件概述

DropDownList控件与ListBox控件的使用类似,但DropDownList控件只允许用户每次从列表中选择一项,而且只在框中显示选定选项。如图3.28所示为DropDownList控件。

图3.28 DropDownList控件

(1)DropDownList控件的常用属性

DropDownList控件的常用属性及说明如表3.17所示。

表3.17 DropDownList控件的常用属性及说明

说明

DropDownList控件的属性大部分与ListBox控件相同,这里不再赘述,读者可参见ListBox控件的属性。

(2)DropDownList控件常用方法

DropDownList控件常用的方法是DataBind。当DropDownList控件使用DataSource属性附加数据源时,可使用DataBind方法将数据源绑定到DropDownList控件上。

(3)DropDownList控件常用事件

DropDownList控件常用的事件是SelectedIndexChanged。当DropDownList控件中选定选项发生改变时,将会触发SelectedIndexChanged事件。

2.将数组绑定到DropDownList控件中

【例3.11】 将数组绑定到DropDownList控件中。(示例位置:TM\sl\03\11

本示例实现的主要功能是使用DropDownList控件的DataBind方法,将ArrayList数组绑定到DropDownList控件中。执行程序,示例运行结果如图3.29所示。

程序实现的主要步骤如下。

(1)新建一个网站,默认主页为Default.aspx,在Default.aspx页面上添加1个DropDownList控件。

(2)将页面切换到后台代码区,在使用ArrayList类之前,需要引用ArrayList类的命名空间,其代码如下:

using System.Collections;

(3)在页面的Page_Load事件中,编写如下代码,将ArrayList数组绑定到DropDownList控件中。

        protected void Page_Load(object sender, EventArgs e)
            {
              if (! IsPostBack)
              {
                  ArrayList arrList = new ArrayList();
                  arrList.Add("星期日");
                  arrList.Add("星期一");
                  arrList.Add("星期二");
                  arrList.Add("星期三");
                  arrList.Add("星期四");
                  arrList.Add("星期五");
                  arrList.Add("星期六");
                  DropDownList1.DataSource = arrList;
                  DropDownList1.DataBind();
              }
            }

3.动态改变DropDownList控件的背景色

【例3.12】 动态改变DropDownList控件的背景色。(示例位置:TM\sl\03\12

本示例实现的主要功能是,当DropDownList控件列表项改变时,其背景色也做相应的改变。执行程序,示例运行结果如图3.30所示。

图3.29 将数组绑定到DropDownList控件中

图3.30 动态改变DropDownList控件的背景色

程序实现的主要步骤如下。

(1)新建一个网站,默认主页为Default.aspx,在Default.aspx页面上添加1个DropDownList控件,其属性设置如表3.18所示。

表3.18 DropDownList控件的属性设置

(2)为了实现当选择的列表项发生改变时,DropDownList控件的背景色也做相应的改变,需要在DropDownList控件的SelectedIndexChanged事件下添加如下代码,在switch语句中改变DropDownList控件的背景色。

        protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
          {
              string color = this.DropDownList1.SelectedItem.Value;
              switch (color)
              {
                case "Red":
                    this.DropDownList1.BackColor = System.Drawing.Color.Red;
                    break;
                case "Green":
                    this.DropDownList1.BackColor = System.Drawing.Color.Green;
                    break;
                case "Blue":
                    this.DropDownList1.BackColor = System.Drawing.Color.Blue;
                    break;
                case " LightGray ":
                    this.DropDownList1.BackColor = System.Drawing.Color. LightGray;
                    break;
                default :
                    this.DropDownList1.BackColor = System.Drawing.Color.White;
                    break;
              }
          }

技巧

(1)获取DropDownList控件选项的索引号和标题

        int Index = DropDownList1.SelectedIndex; //获取选项的索引号
        string text = DropDownList1.SelectedItem; //获取选项的标题

(2)向DropDownList控件的下拉列表框中添加列表项

        DropDownList1.Items.Add(new ListItem("ASP.NET", "0"));
        DropDownList1.Items.Add(new ListItem("VB.NET", "1"));
        DropDownList1.Items.Add(new ListItem("C#.NET", "2"));
        DropDownList1.Items.Add(new ListItem("VB", "3"));

(3)删除选择的DropDownList控件的列表项

        ListItem Item = DropDownList1.SelectedItem;
        DropDownList1.Items.Remove(Item);

(4)清除所有DropDownList控件的列表项

    DropDownList1.Items.Clear();

(5)获取DropDownList控件包含的列表项数

     int count = DropDownList1.Items.Count;

3.3.3 RadioButton控件

1.RadioButton控件概述

RadioButton控件是一种单选按钮控件,用户可以在页面中添加一组RadioButton控件,通过为所有的单选按钮分配相同的GroupName(组名),来强制执行从给出的所有选项集中仅选择一个选项。如图3.31所示为RadioButton控件。

图3.31 RadioButton控件

(1)RadioButton控件的常用属性

RadioButton控件的常用属性及说明如表3.19所示。

表3.19 RadioButton控件的常用属性及说明

下面介绍RadioButton控件的一些重要属性。

GroupName属性

使用GroupName属性指定一组单选按钮,以创建一组互相排斥的控件。如果用户在页面中添加了一组RadioButton控件,可以将所有单选按钮的GroupName属性值设为同一个值,来强制执行在给出的所有选项集中仅有一个处于被选中状态。

Checked属性

如果RadioButton控件被选中,则RadioButton控件的Checked属性值为true;否则,为false。

TextAlign属性

可以通过Text属性指定要在RadioButton控件中显示的文本。当RadioButton控件的TextAlign属性值为Left时,文本显示在单选按钮的左侧;当RadioButton控件的TextAlign属性值为Right时,文本显示在单选按钮的右侧。

(2)RadioButton控件常用的事件

RadioButton控件常用的事件是CheckedChanged,当RadioButton控件的选中状态发生改变时引发该事件。

2.使用RadioButton控件模拟考试系统中的单选题

【例3.13】 使用RadioButton控件模拟考试系统中的单选题。(示例位置:TM\sl\03\13

本示例通过设置RadioButton控件的GroupName属性值,模拟考试系统中的单选题,并在RadioButton控件的CheckedChanged事件下,将用户选择的答案显示出来。执行程序并选择答案D,示例运行结果如图3.32所示,单击“提交”按钮,将会弹出如图3.33所示的提示对话框。

图3.32 使用RadioButton控件模拟考试系统

图3.33 提示对话框

程序实现的主要步骤如下。

(1)新建一个网站,默认主页为Default.aspx,在Default.aspx页面上添加4个RadioButton控件、1个Label控件和1个Button按钮控件,其属性设置及用途如表3.20所示。

表3.20 Default.aspx页面中控件属性设置及用途

(2)为了使用户将已选择的答案显示在界面上,可以在RadioButton控件的CheckedChanged事件中,使用Checked属性来判断该RadioButton控件是否已被选择,如果已被选择,则将其显示出来。单选按钮RadioButton1的CheckedChanged事件代码如下:

        protected void RadioButton1_CheckedChanged(object sender, EventArgs e)
            {
              if (RadioButton1.Checked == true)
              {
                  this.Label1.Text = "A";
              }
            }

注意

单选按钮RadioButton2、RadioButton3和RadioButton4的CheckedChanged事件代码与RadioButton1的CheckedChanged事件代码相似,都是用来判断该单选按钮是否被选中。如果被选中,则将其显示出来。由于篇幅有限,其他单选按钮的CheckedChanged事件代码将不再给出,请读者参见本书光盘。

(3)当用户已选择完答案,可以通过单击“提交”按钮获取正确答案。“提交”按钮的Click事件代码如下:

        protected void Button1_Click(object sender, EventArgs e)
            {
        //判断用户是否已选择了答案。如果没有作出选择,将会弹出对话框,提示用户选择答案
              if (RadioButton1.Checked == false && RadioButton2.Checked == false && RadioButton3.Checked ==
                false && RadioButton4.Checked == false)
              {
                  Response.Write("<script>alert(’请选择答案’)</script>");
              }
              else if (RadioButton4.Checked == true)
              {
                  Response.Write("<script>alert(’正确答案为D,恭喜您,答对了!')</script>");
              }
              else
              {
                  Response.Write("<script>alert(’正确答案为D,对不起,答错了!')</script>");
              }
          }

3.3.4 CheckBox控件

1.CheckBox控件概述

CheckBox控件是用来显示允许用户设置true或false条件的复选框。用户可以从一组CheckBox控件中选择一项或多项。如图3.34所示为CheckBox控件。

图3.34 CheckBox控件

(1)CheckBox控件的常用属性

CheckBox控件的常用属性及说明如表3.21所示。

表3.21 CheckBox控件的常用属性及说明

下面介绍CheckBox控件的一些重要属性。

Checked属性

如果CheckBox控件被选中,则CheckBox控件的Checked属性值为true,否则为false。

TextAlign属性

可以通过Text属性指定要在CheckBox控件中显示的文本。当CheckBox控件的TextAlign属性值为Left时,文本显示在单选按钮的左侧;当CheckBox控件的TextAlign属性值为Right时,文本显示在单选按钮的右侧。

(2)CheckBox控件的常用事件

CheckBox控件的常用事件是CheckedChanged,当CheckBox控件的选中状态发生改变时引发该事件。

2.使用CheckBox控件模拟考试系统中的多选题

【例3.14】 使用CheckBox控件模拟考试系统中的多选题。(示例位置:TM\sl\03\14

本示例主要是模拟考试系统中的多选题功能,并在CheckBox控件的CheckedChanged事件下,将用户选择的答案显示出来。执行程序并选择答案A、B、C,示例运行结果如图3.35所示。单击“提交”按钮,将会弹出如图3.36所示的提示对话框。

图3.35 使用CheckBox控件模拟考试系统

图3.36 提示对话框

程序实现的主要步骤如下。

(1)新建一个网站,默认主页为Default.aspx,在Default.aspx页面上添加4个CheckBox控件、4个Label控件和1个Button控件,其属性设置及用途如表3.22所示。

表3.22 Default.aspx页面中控件的属性设置及用途

注意

CheckBox控件的AutoPostBack属性值设置为true,则当选中复选框时系统会自动将网页中的内容送回Web服务器,并触发CheckBox控件的CheckedChanged事件。

(2)为了将已选择的答案显示在界面上,可以在CheckBox控件的CheckedChanged事件中,使用Checked属性来判断该CheckBox控件是否已被选中,如果已被选中,则将其显示出来。复选框CheckBox1的CheckedChanged事件代码如下:

        protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
          {
              if (CheckBox1.Checked == true)
            {
                this.Label1.Text = "A";
            }
            else
            {
                this.Label1.Text = "";
            }
        }

注意

复选框CheckBox2、CheckBox3和CheckBox4的CheckedChanged事件代码与CheckBox1控件的CheckedChanged事件代码相似,都是用来判断该复选框是否被选中。如果被选择,则将其显示出来。由于篇幅有限,其他复选框的CheckedChanged事件代码将不再给出,请读者参见本书光盘。

(3)当用户选择完答案后,可以通过单击“提交”按钮获取正确答案。“提交”按钮的Click事件代码如下:

        protected void Button1_Click(object sender, EventArgs e)
            {
              //判断用户是否已选择了答案,如果没有作出选择,弹出对话框,提示用户选择答案
              if (CheckBox1.Checked == false && CheckBox2.Checked == false && CheckBox3.Checked == false
        && CheckBox4.Checked == false)
              {
                  Response.Write("<script>alert(’请选择答案’)</script>");
              }
              else if (CheckBox1.Checked == true && CheckBox2.Checked == true && CheckBox3.Checked == true
        && CheckBox4.Checked == false)
              {
                  Response.Write("<script>alert(’正确答案为ABC,恭喜您,答对了!')</script>");
              }
              else
              {
                  Response.Write("<script>alert(’正确答案为ABC,对不起,答错了!')</script>");
              }
            }