省市联动

简单点的数据表:

image

 

实体类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 省市联动
{
    public class tblArea
    {
        public int AreaId { get; set; }
        public string AreaName { get; set; }
        public int AreaPid { get; set; }
        public override string ToString()
        {
            return this.AreaName;
        }
    }
}

 

SqlHelper.cs :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

namespace 省市联动
{
    public static class SqlHelper
    {
        //定义一个连接字符串,
        //readonly,只能在初始化和构造函数中赋值
        private static readonly string conStr=ConfigurationManager.ConnectionStrings["mssqlserver"].ConnectionString;

        //1.执行增insert 删delete 改update的方法;
        public static int ExecuteNonQuery(string sql,params SqlParameter[] pms)
        {
            using (SqlConnection conn = new SqlConnection(conStr))
            {
                using (SqlCommand cmd = new SqlCommand(sql, conn))
                {
                    if (pms != null)
                    {
                        cmd.Parameters.AddRange(pms);
                    }
                    conn.Open();
                    return cmd.ExecuteNonQuery();
                }
            }
        }

        //2.执行查询,返回单个值的方法
        //ExecuteScalar()
        public static object ExecuteScalar(string sql, params SqlParameter[] pms)
        {
            using (SqlConnection conn = new SqlConnection(conStr))
            {
                using (SqlCommand cmd = new SqlCommand(sql, conn))
                {
                    if (pms != null)
                    {
                        cmd.Parameters.AddRange(pms);
                    }
                    conn.Open();
                    return cmd.ExecuteScalar();
                }
            }
        }

        //3.执行查询,返回多行,多列的方法
        //ExecuteReader
        public static SqlDataReader ExecuteReader(string sql, params SqlParameter[] pms)
        {
            SqlConnection conn = new SqlConnection(conStr);
                using (SqlCommand cmd = new SqlCommand(sql, conn))
                {
                    if (pms != null)
                    {
                        cmd.Parameters.AddRange(pms);
                    }
                    try
                    {
                        conn.Open();
                        return cmd.ExecuteReader(CommandBehavior.CloseConnection);
                    }
                    catch
                    {
                        conn.Close();
                        conn.Dispose();
                        throw;
                    }
                }
        }
    }
}

 

App.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings>
    <add name="mssqlserver" connectionString="data source=.;initial catalog=testhome;integrated security=true;"/>
  </connectionStrings>
</configuration>

 

 

界面如下 :

image

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace 省市联动
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //1.加载所有省份
            try
            {
                LoadPrivce();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void LoadPrivce()
        {
           //1.查询所有父ID为0 的那些数据
            string sql = "select areaid,areaname from tblArea where areapid=@pid";
            SqlParameter pl = new SqlParameter("@pid", SqlDbType.Int) { Value = 0 };
           using ( SqlDataReader reader= SqlHelper.ExecuteReader(sql,pl))
            {
                if (reader.HasRows)
                {
                    while (reader.Read())
                    {
                        tblArea model = new tblArea();
                        model.AreaId = reader.GetInt32(0);
                        model.AreaName = reader.GetString(1);
                        comboBox1.Items.Add(model);

                    }
                }
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (comboBox1.SelectedItem != null)
            {
                tblArea model = comboBox1.SelectedItem as tblArea;
                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);
                    //}

                //方式二:通过数据绑定的方式向下拉菜单中增加项
                comboBox2.DataSource = cities;
                comboBox2.DisplayMember = "AreaName";
                comboBox2.ValueMember ="AreaID";
            }
        }

        private List<tblArea> GetSubCity(int areaId)
        {
            List<tblArea> list = new List<tblArea>();
            string sql = "select areaid,areaname from tblarea where areapid=@areaid";
            SqlParameter pl = new SqlParameter("@areaid", SqlDbType.Int) { Value = areaId };
            using (SqlDataReader reader = SqlHelper.ExecuteReader(sql,pl))
            {
                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)
        {
            if(comboBox2.SelectedItem!=null)
            {
                MessageBox.Show(comboBox2.Text + "  " + comboBox2.SelectedValue.ToString());
            }
        }
    }
}

转载于:https://www.cnblogs.com/HarryChis/p/10369700.html

省市联动,-- Table structure for province -- ---------------------------- DROP TABLE IF EXISTS `province`; CREATE TABLE `province` ( `id` int(5) NOT NULL auto_increment, `name` varchar(255) default '', `pid` int(5) default NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of province -- ---------------------------- INSERT INTO `province` VALUES ('82', '北京市', '0'); INSERT INTO `province` VALUES ('83', '天津市', '0'); INSERT INTO `province` VALUES ('84', '河北省', '0'); INSERT INTO `province` VALUES ('85', '山西省', '0'); INSERT INTO `province` VALUES ('86', '内蒙古自治区', '0'); INSERT INTO `province` VALUES ('87', '辽宁省', '0'); INSERT INTO `province` VALUES ('88', '吉林省', '0'); INSERT INTO `province` VALUES ('89', '黑龙江省', '0'); INSERT INTO `province` VALUES ('90', '上海市', '0'); INSERT INTO `province` VALUES ('91', '江苏省', '0'); INSERT INTO `province` VALUES ('92', '浙江省', '0'); INSERT INTO `province` VALUES ('93', '安徽省', '0'); INSERT INTO `province` VALUES ('94', '福建省', '0'); INSERT INTO `province` VALUES ('95', '江西省', '0'); INSERT INTO `province` VALUES ('96', '山东省', '0'); INSERT INTO `province` VALUES ('97', '河南省', '0'); INSERT INTO `province` VALUES ('98', '湖北省', '0'); INSERT INTO `province` VALUES ('99', '湖南省', '0'); INSERT INTO `province` VALUES ('100', '广东省', '0'); INSERT INTO `province` VALUES ('101', '广西壮族自治区', '0'); INSERT INTO `province` VALUES ('102', '海南省', '0'); INSERT INTO `province` VALUES ('103', '重庆市', '0'); INSERT INTO `province` VALUES ('104', '四川省', '0'); INSERT INTO `province` VALUES ('105', '贵州省', '0'); INSERT INTO `province` VALUES ('106', '云南省', '0'); INSERT INTO `province` VALUES ('107', '西藏自治区', '0'); INSERT INTO `province` VALUES ('108', '陕西省', '0'); INSERT INTO `province` VALUES ('109', '甘肃省', '0'); INSERT INTO `province` VALUES ('110', '青海省', '0'); INSERT INTO `province` VALUES ('111', '宁夏回族自治区', '0'); INSERT INTO `province` VALUES ('112', '新疆维吾尔自治区', '0'); INSERT INTO `province` VALUES ('113', '台
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值