zoukankan      html  css  js  c++  java
  • 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";
            }
    实现二级联动、三级联动

    完成地区选择

  • 相关阅读:
    350. Intersection of Two Arrays II
    94. Binary Tree Inorder Traversal
    623. Add One Row to Tree
    JS判断是否为数字,中文,小写、大写字母
    ASP.NET 操作Cookie详解 增加,修改,删除
    ASP.NET MVC 入门1、简介
    通过LINQ TO SQL类显示数据库表的数据
    OutputCache缓存优化asp.net代码 提高网页性能
    数据库读取二进制图片显示到PictureBox中
    WinForm窗体间如何传值的几种方法
  • 原文地址:https://www.cnblogs.com/qq450867541/p/6175664.html
Copyright © 2011-2022 走看看