datagridview中使用DataGridViewComboBoxColumn
Posted sunping177
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;
以上是关于datagridview中使用DataGridViewComboBoxColumn的主要内容,如果未能解决你的问题,请参考以下文章
添加行时 DataGridView 抛出“InvalidOperationException:操作无效...”