在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.idand 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(); // 更新DBif (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;}}


















