ComboBox下拉框连接数据库获取数据


【问题描述】

需要在下拉框中获取数据库的数据
在这里插入图片描述

【代码实现】

        private void cobDepart_SelectedIndexChanged(object sender, EventArgs e)
        {
            string value = this.cobDepart.SelectedValue.ToString();
            Console.WriteLine("当前选中的是"+value);
        }
     private void frmAddStaff_Load(object sender, EventArgs e)
        {
 
            cobSex.Text = "--请选择--";
            cobSex.Items.Add("女");
            cobSex.Items.Add("男");

            try
            {
                //调用B层
                IBLL.IDepartBLL departIBLL = AbstractFactory.Factory.CreateConcreteClass(Encapsulation.BLL, Encapsulation.DepartBLL);
                //查询是否存在该卡号
               List<dynamic> list = departIBLL.SelectAll();

                cobDepart.DataSource = list;//使用list来接收查询到的数据源
                cobDepart.DisplayMember = "departmentId";
                cobDepart.ValueMember = "departmentId";
                cobDepart.Text = "--请选择--";
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);    //抓取B层中的判断异常进行提示
                this.Show();
            }

        }

BLL层

   		/// <summary>
        /// 查询所有的ID
        /// </summary>
        /// <returns></returns>
        public List<dynamic> SelectAll()
        {
            //调用工厂方法创建接口
            IDAL.IDepartDAL departIDAL = AbstractFactory.Factory.CreateConcreteClass(Encapsulation.DAL, Encapsulation.DepartDAL);
            //接受D层的返回值
            List<dynamic> list = departIDAL.SelectAll();

            if (list.Count > 0)//返回数据表类型
            {
                return list;
            }
            else
            {
             
                throw new Exception("查询不到内容!");
            }
        }

DAL层

       /// <summary>
        /// 查询所有的ID
        /// </summary>
        /// <returns></returns>
        public List<dynamic> SelectAll()
        {
            //实例化操作类,进行数据查询,并获取返回值
            SqlHelper sqlHelper = new SqlHelper();

            //执行数据库的查询
            string sql = "SELECT * FROM T_Department ";//构造语句,匹配数据库表

            
            DataTable dt = SqlHelper.GetDataTable(sql);
            List<dynamic> list = new List<dynamic>();
            foreach (DataRow row in dt.Rows) //遍历读取dt里面的数据,并添加到list集合中
            {
                list.Add(new DepartmentInfo()
                {
                    DepartmentId = Convert.ToString(row["departmentId"])
                

                });
            }
            //返回表到到BLL层
            return list;
        }

【遗留问题】

如果要设置下拉框不可以输入,那么可以设置属性DropDownStyle为DropDownList,这样就可以限制下拉框的输入,只显示从数据库中查询到的数据。

但是这样的话,窗体一显示,下拉框就会显示查询到的数据库中的第一条数据,而不是我写的下拉框为空或者是显示“–请选择–”字样。

如果要显示“–请选择–”字样,就只能设置下拉框为可输入的状态。

这个问题暂时还没有解决,应该是我还没有找到正确的方法。 如果你知道答案,欢迎评论留言哦~

  • 2
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张_Laura

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值