程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> ASP.NET基礎 >> DropDownList綁定數據表實現兩級聯動示例

DropDownList綁定數據表實現兩級聯動示例

編輯:ASP.NET基礎
場景一:平時我們在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動態綁定數據表,實現了根據選擇的省份動態下拉該省份下的城市的功能,達到了面向對象設計中解耦的目的,增強了代碼的可維護性和用戶的體驗度。

希望我的講解能對大家有所幫助。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved