在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;
}
}