using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace 省市联动
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//把所有的省份加载到box1上
LoadProvince();
}
private void LoadProvince()
{
//1.查询所有父id为0的数据
string sql = "select AreaId,AreaName from TblArea where AreaPId=@Pid";
SqlParameter p1 = new SqlParameter("@Pid", SqlDbType.Int)
{
Value = 0
};
using (SqlDataReader reader = SqlHelper.ExecuteReader(sql, p1))
{
if (reader.HasRows)
{
while (reader.Read())
{
// comboBox1.Items.Add(reader.GetString(0))
//创建一个类
TblArea model = new TblArea();
model.AreaID = reader.GetInt32(1);
model.AreaName = reader.GetString(0);
comboBox1.Items.Add(model);
}
}
}
}
private void button1_Click(object sender, EventArgs e)
{
//显示当前选中的省份的名称和ID
//if (comboBox1.Text.Trim().Length > 0)
//{
// comboBox1.SelectedItem
//}
if (comboBox1.SelectedItem != null)
{
TblArea model = comboBox1.SelectedItem as TblArea;//?为什么要用as,不可以直接model.Selected.Areaname?
MessageBox.Show(model.AreaName + " " + model.AreaID);
}
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
//选择项改变事件
//1.获取当前用户选择的省份ID
if (comboBox1.SelectedItem != null)
{
comboBox2.Items.Clear();
TblArea model = comboBox1.SelectedItem as TblArea;
int areaId = model.AreaID;
//2.根据areaId从数据库中查询对应的数据
List<TblArea> cities = GetSubCity(areaId);
方法一:向下拉菜单中增加数据
//foreach (TblArea item in cities)
//{
// comboBox2.Items.Add(item);
//}
//方法二:通过数据绑定的方式向下拉菜单中增加项
//建议绑定的时候先设置DisplayMember 和ValueMember的值
//然后在设置DataSource数据源对象
comboBox2.DisplayMember = "AreaName";
comboBox2.ValueMember = "AreaID";
comboBox2.DataSource = cities;
}
}
private List<TblArea> GetSubCity(int areaId)
{
List<TblArea> list = new List<TblArea>();
string sql = "select AreaID,AreaName from TblArea where AreaPId=@id";
SqlParameter p1 = new SqlParameter("@id", SqlDbType.Int) { Value = areaId };
using (SqlDataReader reader = SqlHelper.ExecuteReader(sql, p1))
{
if(reader.HasRows)
{
while(reader.Read())
{
TblArea model = new TblArea();
model.AreaID = reader.GetInt32(0);
model.AreaName = reader.GetString(1);
list.Add(model);
}
}
}
return list;
}
private void button2_Click(object sender, EventArgs e)
{
MessageBox.Show(comboBox2.Text+" "+comboBox2.SelectedValue.ToString())
}
}
}