这篇文章主要介绍了DropDownList绑定数据表实现两级联动具体实现,需要的朋友可以参考下
场景一:平时我们在DropDownList控件下添加下拉选项时,都会使用它的Item.Add方法,直接在代码下添加。如果我们想添加或修改下拉选项,则必须去修改源代码。如果几个DropDownList控件的下拉选项相同,我们则需要重复添加好多次,后期的维护工作很不方便。
场景二:我们在12306网站买票时,肯定遇到过这么一种情景:我们需要先选定目的地的省份,选完省份后在城市选框中会自动加载该省份的城市,实现两级联动。
针对以上两个场景,我们可以用DropDownList直接绑定数据表,根据选择的省份动态加载该省份下的城市。光说不练,不是好汉,让我用一个小Demo来大家演示下详细过程吧。
首先我们需要在数据库中建立两个表,一个是Province(省份)表,一个是City(城市)表。建表语句如下:
代码如下:
CreateTableProvince
(
ProIDintprimarykey,
ProNamevarchar(20)notnull
)
CreateTableCity
(
CityIDintprimarykey,
ProIDintforeignkeyreferencesProvince(ProID),
CityNamevarchar(20)
)
InsertintoProvincevalues('1','北京')
InsertintoProvincevalues('2','河北')
InsertintoProvincevalues('3','山东')
insertintoCityvalues('1','1','海淀')
insertintoCityvalues('2','1','丰台')
insertintoCityvalues('3','1','大兴')
insertintoCityvalues('4','2','衡水')
insertintoCityvalues('5','2','廊坊')
insertintoCityvalues('6','2','保定')
insertintoCityvalues('7','3','济南')
insertintoCityvalues('8','3','烟台')
insertintoCityvalues('9','3','青岛')
通过建表语句我们可以知道,北京下有三个城市--海淀、丰台、大兴,河北下有三个城市--衡水、廊坊、保定,山东有三个城市--济南、烟台、青岛。
然后我们在Web窗体中放好控件,效果如下图所示:
dropDownList控件名称分别为ddlProvince、ddlCity
接着我们在Web后台代码中实现功能。我们需要在Web窗体加载时,ddlProvince控件绑定Province表,在ddlProvince下拉选项改变时,ddlCity控件绑定City表。实现代码如下:
建立数据库连接类:
代码如下:
publicclassDB
{
//连接数据库的字符串
publicstaticSqlConnectionCreateConnection()
{
SqlConnectioncon=newSqlConnection("DataSource=.;InitialCatalog=test;uid=sa;pwd=123456;");
returncon;
}
}
Web窗体加载时执行代码:
代码如下:
protectedvoidPage_Load(objectsender,EventArgse)
{
//如果窗体是第一次加载
if(!this.IsPostBack)
{
//绑定省份
SqlConnectioncon=DB.CreateConnection();
//打开数据库连接
con.Open();
SqlCommandcmdProvince=newSqlCommand("select*fromProvince",con);
SqlDataReadersdrProvince=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控件下拉选项改变时执行的代码:
代码如下:
protectedvoidddlProvince_SelectedIndexChanged(objectsender,EventArgse)
{
SqlConnectioncon=DB.CreateConnection();
//打开数据库连接
con.Open();
//绑定城市
SqlCommandcmdCity=newSqlCommand("select*fromCitywhereProID="+this.ddlProvince.SelectedValue,con);
SqlDataReadersdrCity=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动态绑定数据表,实现了根据选择的省份动态下拉该省份下的城市的功能,达到了面向对象设计中解耦的目的,增强了代码的可维护性和用户的体验度。
希望我的讲解能对大家有所帮助。
更多信息请查看IT技术专栏