龙空技术网

ado制作简单省市级联下拉选框

剑云锋 194

前言:

现在我们对“htmlselect级联”大约比较关切,你们都需要知道一些“htmlselect级联”的相关资讯。那么小编同时在网络上搜集了一些有关“htmlselect级联””的相关文章,希望我们能喜欢,同学们一起来学习一下吧!

什么是省市级联下拉选框?

省市级联下拉选框是指:在我们填写地址时经常用到的省市等可直接被选择的下拉列表框。

怎么制作下拉省市下拉选框呢?

工具:

Visual Studio 2015

SQL Server2012

对象:

VS中UI界面:

2个Label标签:

Label1:Text属性修改为 省。

Label2:Text属性修改为 市。

2个ComboBox:

ComboBox1:Name属性修改为:cmbProvince ;DropDownStyles属性修改为:DropDownList(只能选择不能修改)

ComboBox2:Name属性修改为:cmbcity ;DropDownStyles属性修改为:DropDownList(只能选择不能修改)

SqlServer 省市区数据表:

Adress.mdf

省市数据库的特点:

查询省市只需要用到两个参数:Id和Pcode 。

Pcode=0;表示所有的省;

Pcode = Id ;表示省所对应的市;

例如:

查询省市:

--查询省select * from Adress where Pcode=0--查询市select * from Adress where Pcode = 2

结果如下:

用窗体事件加载,实现省市级联选择第一步:打通思路,做布局。

思考:

选择省和选择市单独来做,都是实现一个下拉选框的选项选择,因此实现的方法一致,即可以共用一个方法。

逆序推导法:

下拉列表数据表示需要几个参数:1、Pcode 2、Id 3、PCity

Pcode =0 +PCity ==ComboBox1 =cmbProvince 省下拉框数据

Pcode=Id(PCity的Id值) +PCity ==ComboBox2 =cmbcity 市下拉框数据

(问题:PCity对应的Id值,怎么获取呢?)

因此共用的方法LoadData的两个输入参数:

1.string pid 表示PCity对应的Id号

2.ComboBox cmb 表示使用方法的对象

输出参数为:下拉列表选项数据。

void LoadData(string pid,ComboBox cmd){}

通过返回值(GetId)方法来获取PCity对应的Id值:

分析:PCity 对应的Id值 只要通过ExecuteScalar()方法返回,PCity对应行的Id即可。

因此 输入参数为 PCity ,输出参数为PCity对应的Id值

即:

string GetId(string PCity){}
第二步:定义获取PCity对应Id值方法

定义获得PCity 对应的Id值GetId方法的实现:

1.数据库连接

 using System.Data.SqlClient;string connStr = "Data Source = . ; Initial Catalog=TestSchool; Integrated Security = TRUE"; using (SqlConnection conn = new SqlConnection(connStr)) { conn.Open(); }

2.创建Sql命令语句:

string sql = "select Id from Adress where PCity=@City";

3.参数化查询

 SqlParameter p = new SqlParameter("City", PCity);SqlCommand cmd = new SqlCommand(sql,conn);cmd.Parameters.Add(p);

4.返回Id值

 return cmd.ExecuteScalar().ToString();

GetId方法的完整代码如下:

 string GetId(string PCity) { string connStr = "Data Source = . ; Initial Catalog=TestSchool; Integrated Security = TRUE"; using (SqlConnection conn = new SqlConnection(connStr)) { conn.Open(); string sql = "select Id from Adress where PCity=@City"; SqlParameter p = new SqlParameter("City", PCity); SqlCommand cmd = new SqlCommand(sql,conn); cmd.Parameters.Add(p); return cmd.ExecuteScalar().ToString(); } }
第三步:加载下拉数据方法的实现:

1.数据库连接

// using System.Data.SqlClient;string connStr = "Data Source = . ; Initial Catalog=TestSchool; Integrated Security = TRUE"; using (SqlConnection conn = new SqlConnection(connStr)) { conn.Open(); }

2.创建Sql命令语句:

string sql = "select Id,PCity from Adress where Pcode=@pid";

3.参数化查询

 SqlParameter p = new SqlParameter("pid", pid); SqlCommand cmd = new SqlCommand(sql, conn); cmd.Parameters.Add(p);

4.借用cmd.ExecuteReader()方法实现SQLDataReader类 实例化。

 SqlDataReader reader = cmd.ExecuteReader();

5.通过循环添加下拉列表项

 while (reader.Read()) { cmb.Items.Add(reader["PCity"]); }

LoadData()方法的完整代码如下:

 void LoadData(string pid, ComboBox cmb) { string connStr = "Data Source = . ; Initial Catalog=TestSchool; Integrated Security = TRUE"; using (SqlConnection conn = new SqlConnection(connStr)) { conn.Open(); string sql = "select Id,PCity from Adress where Pcode=@pid"; SqlParameter p = new SqlParameter("pid", pid); SqlCommand cmd = new SqlCommand(sql, conn); cmd.Parameters.Add(p); SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { cmb.Items.Add(reader["PCity"]); } } }
第四步:实现功能省选中后,自动显示该省对应的一个市

通过cmbProvince 省的下拉ComboBox 的SelectedIndexChanged事件,实现级联

1.定义变量:

string City = cmbProvince.SelectedItem.ToString();string pid = GetId(City);

2.调用cmbcity的Clear()方法,清除每次加载省后,级联cmbcity 中的PCity项数据。

this.cmbcity.Items.Clear();

3.加载省市数据,默认市的下拉框显示项为第0索引项PCity值。

 LoadData(pid,cmbcity); this.cmbcity.SelectedIndex = 0;
第五步:窗体加载时,默认显示省的第0索引项PCity值
 private void Provice_Load(object sender, EventArgs e) { LoadData("0",cmbProvince); cmbProvince.SelectedIndex = 0; }
第六步:结束,结果展示。

标签: #htmlselect级联