三級聯動 - 查詢地區,選擇省份自動顯示該省份的市、區縣
有如下一個數據庫
一、寫查詢方法

public class ChinaData { SqlConnection conn = null; SqlCommand cmd = null; public ChinaData() { conn = new SqlConnection("server=.;database=mydb;user=sa;pwd=123"); cmd = conn.CreateCommand(); } //查詢方法 參數為父級代碼 public List<China> Select(string pcode) { List<China> lc = new List<China>(); cmd.CommandText = "select *from ChinaStates where ParectAreaCode=@a"; cmd.Parameters.Clear(); cmd.Parameters.AddWithValue("@a",pcode); conn.Open(); SqlDataReader dr = cmd.ExecuteReader(); if (dr.HasRows) { while(dr.Read()) { China c = new China(); c.AreaCode = dr["AreaCode"].ToString(); c.AreaName = dr["AreaName"].ToString(); c.ParentAreaCode = dr["ParentAreaCode"].ToString(); lc.Add(c); } } conn.Close(); return lc; } }
二、窗體啟動時自動讀取數據庫數據

public partial class Form1 : Form { public Form1() { InitializeComponent(); //窗口打開時,自動查詢代碼0001中國下的子級數據 //綁定省 comboBox1.DataSource = new ChinaData().Select("0001"); comboBox1.DisplayMember = "AreaName"; comboBox1.ValueMember = "AreaCode"; //綁定市 comboBox2.DataSource = new ChinaData().Select(comboBox1.SelectedValue.ToString ()); comboBox2.DisplayMember = "AreaName"; comboBox2.ValueMember = "AreaCode"; //綁定區縣 comboBox3.DataSource = new ChinaData().Select(comboBox2.SelectedValue.ToString()); comboBox3.DisplayMember = "AreaName"; comboBox3.ValueMember = "AreaCode"; } }
三、實現改變選項的時候,展示子級內容

//省選中項改變時事件 private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { //綁定市 comboBox2.DataSource = new ChinaData().Select(comboBox1.SelectedValue.ToString()); comboBox2.DisplayMember = "AreaName"; comboBox2.ValueMember = "AreaCode"; } //市選中項改變時事件 private void comboBox2_SelectedIndexChanged_1(object sender, EventArgs e) { //綁定區縣 comboBox3.DataSource = new ChinaData().Select(comboBox2.SelectedValue.ToString()); comboBox3.DisplayMember = "AreaName"; comboBox3.ValueMember = "AreaCode"; }
完成地區選擇