场景一:平时我们在DropDownList控件下添加下拉选项时,都会使用它的Item.Add方法,直接在代码下添加。如果我们想添加或修改下拉选项,则必须去修改源代码。如果几个DropDownList控件的下拉选项相同,我们则需要重复添加好多次,后期的维护工作很不方便。
场景二:我们在12306网站买票时,肯定遇到过这么一种情景:我们需要先选定目的地的省份,选完省份后在城市选框中会自动加载该省份的城市,实现两级联动。
针对以上两个场景,我们可以用DropDownList直接绑定数据表,根据选择的省份动态加载该省份下的城市。光说不练,不是好汉,让我用一个小Demo来大家演示下详细过程吧。
首先我们需要在数据库中建立两个表,一个是Province(省份)表,一个是City(城市)表。建表语句如下:
Create Table Province
(
ProID int primary key,
ProName varchar(20) not null
)
Create Table City
(
CityID int primary key,
ProID int foreign key references Province(ProID),
CityName varchar(20)
)
Insert into Province values('1','北京')
Insert into Province values('2','河北')
Insert into Province values('3','山东')
insert into City values('1','1','海淀')
insert into City values('2','1','丰台')
insert into City values('3','1','大兴')
insert into City values('4','2','衡水')
insert into City values('5','2','廊坊')
insert into City values('6','2','保定')
insert into City values('7','3','济南')
insert into City values('8','3','烟台')
insert into City values('9','3','青岛')
通过建表语句我们可以知道,北京下有三个城市--海淀、丰台、大兴,河北下有三个城市--衡水、廊坊、保定,山东有三个城市--济南、烟台、青岛。
然后我们在Web窗体中放好控件,效果如下图所示:
dropDownList控件名称分别为ddlProvince、ddlCity
接着我们在Web后台代码中实现功能。我们需要在Web窗体加载时,ddlProvince控件绑定Province表,在ddlProvince下拉选项改变时,ddlCity控件绑定City表。实现代码如下:
建立数据库连接类:
public class DB
{
//连接数据库的字符串
public static SqlConnection CreateConnection()
{
SqlConnection con = new SqlConnection("Data Source=. ;Initial Catalog=test;uid=sa;pwd=123456;");
return con;
}
}
Web窗体加载时执行代码:
protected void Page_Load(object sender, EventArgs e)
{
//如果窗体是第一次加载
if (!this.IsPostBack)
{
//绑定省份
SqlConnection con = DB.CreateConnection();
//打开数据库连接
con.Open();
SqlCommand cmdProvince = new SqlCommand("select * from Province", con);
SqlDataReader sdrProvince = cmdProvince.ExecuteReader();
//将sdrProvince中的内容绑定到ddlProvince下拉列表中
this.ddlProvince.DataSource = sdrProvince;
//需要显示的数据表Province中的内容
this.ddlProvince.DataTextField = "ProName";
//需要显示的数据表Province中的主键
this.ddlProvince.DataValueField = "ProID";
this.ddlProvince.DataBind();
sdrProvince.Close();
//关闭数据库连接
con.Close();
}
}
ddlProvince控件下拉选项改变时执行的代码: protected void ddlProvince_SelectedIndexChanged(object sender, EventArgs e)
{
SqlConnection con = DB.CreateConnection();
//打开数据库连接
con.Open();
//绑定城市
SqlCommand cmdCity = new SqlCommand("select * from City where ProID=" + this.ddlProvince.SelectedValue, con);
SqlDataReader sdrCity = cmdCity.ExecuteReader();
//将sdrCity中的内容绑定到ddlCity下拉列表中
this.ddlCity.DataSource = sdrCity;
//需要显示的数据表City中的内容
this.ddlCity.DataTextField = "CityName";
//需要显示的数据表City中的主键
this.ddlCity.DataValueField = "CityID";
this.ddlCity.DataBind();
sdrCity.Close();
//关闭数据库连接
con.Close();
}
这样,我们就用DropDownList动态绑定数据表,实现了根据选择的省份动态下拉该省份下的城市的功能,达到了面向对象设计中解耦的目的,增强了代码的可维护性和用户的体验度。
希望我的讲解能对大家有所帮助。
分享到:
相关推荐
主要介绍了DropDownList绑定数据表实现两级联动具体实现,需要的朋友可以参考下
用DropDownList控件绑定XML数据实现省市区三级联动
.net MVC下,AJAX实现DropDownList数据绑定,并实现无刷新城市联动。 内含SQL Server 数据库执行语句,只要运行一下就OK了。 运行代码时注意别忘了更改成所使用数据库的ServerName,LoginName,Password。
DropdownList绑定数据的方法
DropDownList的数据绑定名称的直接方式
开发中会遇到的例子,使用dropdownlist绑定后台数据库,本例使用的是oracle可修改为其他数据库,适合新手学习。
基于xml数据的省市区三级联动, 以xml作为数据存储区
dropdownlist 省市二级联动 无刷新
在做web系统时 制作注册页面时 有用到省市联动,在网上看了下 没有整合好 的 好多都是介绍。所以对于我这样的新手来说,挺麻烦的。所以把大家的东西整合下。一个完整的省市联动。
打开编译软件,导入网站,直接运行!内含完整中国省市县XML文档,以及完整的实现过程!
DropDownList 3级联动,非常实用
asp.net dropdownlist做的二级联动,是数据库提取
DropDownList无刷新三级联动实现了!!!!
DropDownList和ListBox实现两级联动功能,它们可以将从后台数据库中搜选的出来的信息加以绑定,这里要实现的功能是在DropDownList中选择“省”,然后让ListBox自动将其省份下的“市”显示出来,这就是所谓的两级联动...
(asp.net c#)DropDownList绑定后显示对应的项的两种方法.docx
dropdownlist绑定数据库中的列
年月两级联动无刷新。年月显示最近十年数据。文件形式为.net用户控价下载后直接导入到项目后用法同用户控件用法。很方便
原先上传txt出错的 这次补上cs文件 非常抱歉