您的位置:首页 > 移动开发 > Objective-C

简单的省市两级联动

2012-05-24 21:49 148 查看
        这次看教程又碰到了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注释也稍显拙劣。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息