第三弹 从数据库拉取数据至groupBox和Combox实现地区的联动

一、界面管理

注:在此篇文章仅演示标题所说的内容,项目的具体实现过程会在后续更新。

  • 组件图
    在这里插入图片描述
    组件解释:
    性别和婚姻状况组件后边添加的是groupBox,再通过代码动态添加RadioButton
    家庭住址后边添加的是comBox,首先修改其Text值,再通过代码添加数据

二、代码部分

1.实例化数据库对象

db_MoudelEntities1 ae = new db_MoudelEntities1();

2.构造函数,方便后续的所有类似的组件添加数据
type值为数据库表中的字段值,gb为向需要的GroupBox添加数据的形参。原理与其他语言的构造方法原理类似,这里就不再赘述。

 //向GroupBox中添加Button按钮
        private void dict_gbRadio(int type, GroupBox gb) {
			//从数据库中拿到和传递的 type值相同的数据
            List<t_dict> tdlist = ae.t_dict.Where(t => t.enum_type == type).ToList();
            int i = 0;//为了后续的第一个值为选中状态
            foreach (t_dict item in tdlist) {
               //添加按钮
                RadioButton rb = new RadioButton();
                //将对应的type 的value值循环·给rb的Text值
                rb.Text = item.enum_value;
                //设置RadioButton的位置 x轴和y轴
                rb.Location = new Point(i * 70 + 10, 10);
                rb.Width = 70;
                if (i == 0)
                    rb.Checked = true;
                    //向GroupBox中添加RadioButton按钮
                gb.Controls.Add(rb);
                i++;
   
                    }
        }

地区联动

//地区联动
        private void area_combox(int id, ComboBox cb) {

            List<t_area> arealist = ae.t_area.Where(t => t.area_parent_id == id).ToList();
            foreach(t_area item in arealist)
            {
                cb.Items.Add(item.area_name);
            }
        }

向单独的ComBox中添加数据

 //向单独的ComBox中添加数据
        private void dict_combox(int type, ComboBox cb) {

            List<t_dict> tdlist = ae.t_dict.Where(t => t.enum_type == type).ToList();
            foreach (t_dict items in tdlist) {
                cb.Items.Add(items.enum_value);
            }
        }

3.地区联动后续
双击省的ComBox后自动生成此方法
当前组件的值发生改变后,让市和区的Text为空,并且清空市的Items值,防止在省的内容发生改变后在市中继续叠加从数据库拉取的相应数据

 private void t_fpro_SelectedIndexChanged(object sender, EventArgs e)
        {
            t_fcit.Text = "";
            t_fcou.Text = "";
            t_fcit.Items.Clear();
            //通过已得到的省的名字获取数据
            t_area area = ae.t_area.Where(t => t.area_name == t_fpro.Text).First();
            
            area_combox(area.id, t_fcit);
        }

        private void t_fcit_SelectedIndexChanged(object sender, EventArgs e)
        {
            
            t_fcou.Items.Clear();
            t_area area = ae.t_area.Where(t => t.area_name == t_fcit.Text).First();
            area_combox(area.id, t_fcou);
        }

4.向主窗体中调用构造方法

 private void Frmcbgl_Load(object sender, EventArgs e)
        {
            //性别
            dict_gbRadio(1,t_gbdictsex);
           //婚姻状况
            dict_gbRadio(11, t_gbdictmer);
            //家庭住址 省
            area_combox(0, t_fpro);
            //关系
            dict_combox(9, t_cbrela);
        }

附部分数据表:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值