Asp.net—DropDownList与listbox的联动

        在asp.net控件中,有一些控件是可以支持绑定数据库的,比如dropdownlist、listbox、checkboxgroup、radiobuttnlist。这些控件通过绑定数据库,来显示相应的数据。

        在实际的项目中,会有这样的需求,比如在dropdownlist绑定了数据库以后,选择相应的内容,在listbox中就会显示对应内容下的具体条目。比如:在dropdownlist中绑定数据库中所有的省,当选择某个省以后,就会在listbox中出现对应省的城市。这就是两级联动。

下面来介绍一下用到的这两个控件(介绍代码实现中用到的属性和事件):

dropdownlist控件介绍

dopdownlist控件用于创建下列列表,使用数据绑定来指定要显示的项列表。

属性:

DataSource:绑定的数据源。

DataTextField:显示数据文本字段。

DataValueField:显示数据值字段。

selectedvalue:选定项的值。

事件:

SelectedIndexChanged:当已选择的索引发生改变的事件

listbox控件介绍

 listbox控件用于创建单选或多选的列表控件,也是用来显示列表数据的控件。


下面是具体的代码实现:

WebForm1.aspx:页面的控件

   <form id="form1" runat="server">
    <div>
        <asp:DropDownList ID="ddpro" runat="server" AutoPostBack="True" Height="16px" OnSelectedIndexChanged="ddep_SelectedIndexChanged" Width="143px">
        </asp:DropDownList>
        <asp:ListBox ID="lcity" runat="server" AutoPostBack="True" Height="164px" Width="296px"></asp:ListBox>
    </div>
    </form>
WebForm1.aspx.cs:服务器代码

       protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                //在dropdownlist中显示数据库中的省
                SqlConnection con = db.createdb();
                con.Open();
                SqlCommand cmd = new SqlCommand("select * from T_pro",con);
                SqlDataReader sdr = cmd.ExecuteReader();
                this.ddpro.DataSource = sdr;    //绑定数据源
                this.ddpro.DataTextField = "proName";   //显示数据文本
                this.ddpro.DataValueField = "proID";//显示数据值字段
                this.ddpro.DataBind();
                sdr.Close();
                con.Close();
            }
        }

        protected void ddpro_SelectedIndexChanged(object sender, EventArgs e)
        {
            lcity.Items.Clear();
            SqlConnection con = db.createdb();
            con.Open();
            SqlCommand cmdemp = new SqlCommand("select * from emp where depID=" + this.ddpro.SelectedValue, con);
            SqlDataReader sdrcity = cmdemp.ExecuteReader();
            while (sdrcity.Read())
            {
                this.lcity.Items.Add(new ListItem(sdrcity.GetString(1), sdrcity.GetInt32(0).ToString()));   //向listbox中添加对应的省的城市名
            }
            sdrcity.Close();
            con.Close();
        }
    }

db类:连接数据库

    public class db
    {
        public db()
        { }
        public static SqlConnection createdb()
        {
            SqlConnection con = new SqlConnection("server=yiqing-pc;database=pro;uid=sa;pwd=....;");
            return con;
        }
    }
总结

        记得去年测试考试系统中,就用到了两级联动,当时还在想用什么思路去做,现在也能算是实现两级联动的简单例子了,但是这种简单例子更容易表现出两级联动的原理。在以后的学习中,还要有更多的关于这方面体会和收获。


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 18
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值