前言:
现在我们对“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级联