您的位置:首页 > 其它

datagridview中使用DataGridViewComboBoxColumn

2017-08-25 13:39 1046 查看
在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