【sql】省市联动

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())
        }
    }
}
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值