DropDownList绑定数据表实现两级联动示例
2014-08-28来源:

这篇文章主要介绍了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技术专栏

推荐信息
Baidu
map