C#-WinForm-三级联动

三级联动 - 查询地区,选择省份自动显示该省份的市、区县

有如下一个数据库

  

一、写查询方法

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";
        }
实现二级联动、三级联动

完成地区选择

转载于:https://www.cnblogs.com/qq450867541/p/6175664.html

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值