datagridview中使用DataGridViewComboBoxColumn

在datagridview中使用自带的DataGridViewComboBoxColumn,加载数据库中的数据,选中和保存所需要的数据
实现效果如图
加载数据库已保存的数
这里写图片描述
选择自己所需要的数据
这里写图片描述
具体代码如下
datagridview命名为:dgvDrugList
添加基本列及对应的设计名等,如下图
这里写图片描述
datagridview的EditMode设置为EditOnEnter
代码如下
窗体事件添加一个方法

 private void DrugMaintainFrm_Load(object sender, EventArgs e)
        {
            try
            {
                dbInfo = new DbInfo();
                // initDisp();//显示数据
                initFrm(); //初始化界面
            }
            catch (Exception ex)
            {
                Error.ErrProc(ex);
            }

        }

方法具体代码

  #region 数据初始化


        /// <summary>
        /// 将窗体数据显示到各个控件
        /// </summary>
        private void initFrm()
        {
            dsWord = GetWordIDList();//用药途径
            dsFreq = dbInfo.GetTableData("PERFORM_FREQ_DICT", string.Empty);
            //用药途径下拉列表
            dsWord.Tables[0].DefaultView.Sort = "Id";
            DataGridViewComboBoxColumn cbxColumn = (DataGridViewComboBoxColumn)dgvDrugList.Columns["wordid"];
            cbxColumn.DataSource = dsWord.Tables[0].DefaultView;
            cbxColumn.DisplayMember = "DESCRIBE";
            cbxColumn.ValueMember = "Id";
            // 频次下拉列表         
            DataGridViewComboBoxColumn cbxColumn1 = (DataGridViewComboBoxColumn)dgvDrugList.Columns["freq_desc"];
            cbxColumn1.DataSource = dsFreq.Tables[0].DefaultView;
            cbxColumn1.DisplayMember = "freq_desc";
            cbxColumn1.ValueMember = "freq_desc";


            string sql = string.Format(@"select  b.class_name,a.*
from drug_dict a ,drug_class_dict b
where a.community_code='{0}'
and a.drug_class=b.class_code and a.community_code=b.community_code", GVars.CommunityCode);
            dsDrugList = dbInfo.GetData(sql, "drug_dict");
            dgvDrugList.AutoGenerateColumns = false;//去掉自动增加列
            dgvDrugList.DataSource = dsDrugList.Tables[0].DefaultView;

        }
        /// <summary>
        /// 用药途径
        /// </summary>
        private DataSet GetWordIDList()
        {
            string wordSql = string.Format(@"select a.Id,a.DESCRIBE
from dict_word a,dict_category b
where a.category_id=b.id
  and b.code='ADMINISTRATION_DICT'");
            DataSet dswordList = dbInfo.GetData(wordSql, "dict_word");
            return dswordList;

        }
        /// <summary>
        /// 执行频次
        /// </summary>
        private DataSet GetWFREQList()
        {
            string freqSql = string.Format(@"select serial_no,freq_desc from PERFORM_FREQ_DICT ");
            DataSet dsfreqList = dbInfo.GetData(freqSql, "PERFORM_FREQ_DICT");
            return dsfreqList;

        }
        #endregion

点击保存事件对选中后的信息进行保存

  private void btnSave_Click(object sender, EventArgs e)
        {
            try
            {
                this.Validate(); // 更新DB

                if (dsDrugList.HasChanges() == false)
                {
                    GVars.Msg.Show("I0006");
                    return;
                }
                dsDrugList.Tables[0].TableName = "drug_dict";
                dbInfo.SaveTableData(dsDrugList.GetChanges());
                dsDrugList.AcceptChanges();
                MessageBox.Show("保存成功!", "提示信息");
                //initDisp();
                initFrm();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
                //initDisp();
                initFrm();
                return;
            }
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值