简单的省市两级联动

这次看教程又碰到了DropDownList控件实现的两级联动,上次由于VS出了点问题,所以没实现,这次决定实现一下。

前台界面是下面两个不修边幅的DropDownList:


数据库查询语句如下:

use beidaqingniao create table sheng ( proID int primary key, proName varchar(30) not null ) insert into sheng values(1,'北京') insert into sheng values(2,'黑龙江') insert into sheng values(3,'河北') insert into sheng values(4,'山东') insert into sheng values(5,'天津') insert into sheng values(6,'台湾') create table chengshi ( cityID int primary key, proID int foreign key references sheng(proID), cityName varchar(30) not null ) insert into chengshi values(1,1,'北京') insert into chengshi values(2,2,'哈尔滨') insert into chengshi values(3,2,'齐齐哈尔') insert into chengshi values(4,3,'保定') insert into chengshi values(4,3,'廊坊') 数据库结构很简单,sheng(又命名不规范了……)表中的proID是chengshi表中proID的外键。

后台代码如下:

protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack ) { SqlConnection con = GetConnString(); con.Open(); SqlCommand sqlcmd = new SqlCommand("select * from sheng", con); SqlDataReader reader = sqlcmd.ExecuteReader(); //生成sheng表的sqldatareader drpProvince.DataSource = reader; //数据源 drpProvince.DataTextField = "proName"; //显示的字段为proName(省名) drpProvince.DataValueField = "proID"; //字段值为proID(省ID) drpProvince.DataBind();//绑定 reader.Close(); //关闭sqldatareader con.Close(); //关闭连接 } SqlConnection conn = GetConnString(); conn.Open(); SqlCommand sqlcity = new SqlCommand("select * from chengshi where proID=" + drpProvince.SelectedItem.Value, conn); SqlDataReader readercity = sqlcity.ExecuteReader(); drpCity.DataSource = readercity; drpCity.DataTextField = "cityName"; drpCity.DataValueField = "cityID"; drpCity.DataBind(); readercity.Close(); conn.Close (); } public SqlConnection GetConnString() { //建立连接 SqlConnection con = new SqlConnection("Server=.;database=beidaqingniao;uid=sa;pwd=123456"); return con; }
运行结果:

需要注意的是,应该把两个DropDownList的AutoPostBack属性设置为True。通过这个例子,终于分清楚了选择系列控件中的DataTextField和DataValueField,实现的过程中还犯了一个低级错误,就是把这两个控件的数据绑定都放到了回发判断语句下面,结果是无论选择那个省级的项,市级一直是“北京”,这是因为判断了回发,所以即使重新选择,也不会更新市级数据。关于IsPostBack的使用,欢迎访问我的博客《不要“若只如初见”——WEB/BS开发必备基础知识

因为只是为了简单说明两级联动这个例子,所以在实现方面没有建立BLL和DLL注释也稍显拙劣。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值