热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用DataGridViewComboBoxColumn实现数据绑定与操作

本文详细介绍如何在DataGridView中使用DataGridViewComboBoxColumn来加载、选择和保存数据库中的数据,提供具体的实现步骤和示例代码。

前言:本文旨在帮助开发者了解如何在.NET框架下的Windows Forms应用程序中,利用DataGridView控件中的DataGridViewComboBoxColumn功能,实现从数据库加载数据、用户选择以及数据保存的操作。通过本指南,您将能够更好地理解和应用这一技术,提升开发效率。


在Windows Forms应用程序中,DataGridView控件是一个非常强大的工具,用于显示和编辑表格数据。其中,DataGridViewComboBoxColumn允许用户从预定义的选项列表中选择值,这在处理需要从多个选项中选择数据的场景时特别有用。


### 实现步骤


1. **设置DataGridView**
- 首先,确保您的项目中已经添加了必要的引用,并且在Form上放置了一个DataGridView控件。
- 将DataGridView命名为`dgvDrugList`,并根据需求添加相应的列,包括一个DataGridViewComboBoxColumn用于展示下拉选项。


2. **配置ComboBoxColumn**
- 在Form的Load事件中,编写代码以初始化DataGridView。这包括设置数据源、显示成员和值成员。
- 例如,如果您有一个名为`wordid`的ComboBoxColumn,可以从数据库中获取数据并绑定到该列:


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

3. **数据初始化**
- 在`initFrm`方法中,加载用药途径和频次的数据,并将其绑定到对应的ComboBoxColumn上。
- 示例代码如下:


#region 数据初始化 ///  /// 将窗体数据显示到各个控件 ///  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; } #endregion

4. **保存数据**
- 当用户完成数据选择后,可以通过点击“保存”按钮来提交更改。在按钮的Click事件中,编写代码以验证并保存数据。
- 示例代码如下:


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("保存成功!", "提示信息"); initFrm(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); initFrm(); return; } }

推荐阅读
author-avatar
浮云
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有