c# - DataGridView Winforms 填充 ComboBoxCell

标签 c# .net winforms data-binding

我正在开发一款软件,用户可以在其中使用数据 GridView 创建发票。 我有一些文本框单元格和一些组合框单元格。 我想做一些事情:

  1. 我想填充组合框单元格 从数据库表。我试过这个:

    DataTable tblItems = UtilityClass.GetDataTable("SELECT ItemName,ItemID FROM Items"); DataGridViewComboBoxColumn itemCol=DataGridViewComboBoxColumn)dataGridViewNewBill.Columns["ColItem"]; itemCol.DataSource = tblItems; itemCol.DisplayMember = "元素名称"; itemCol.ValueMember = "ItemID";

    但是,在选择了一个项目之后,并且 当焦点移动到 不同的单元格,在中选择的项目 组合框(或文本框的文本) 细胞消失。
    编辑:似乎 如果在组合框中选择一个项目 导致所有组合框单元格得到 那个值,因为他们有 相同的数据源!但即使是 这种情况,为什么组合框/文本框 焦点是后单元格失去它的值(value) 移动到不同的单元格。

最佳答案

您是否正在处理任何正在删除数据的特定事件。

选择一个值会导致它被其他单元格选中,因为网格在组合框列的所有单元格中使用一个通用的 ComboBox,它是用于启用选择的 EditingControl列的值。

您可以通过处理EditingControlShowing 事件来控制行为

尝试设置此模式

dataGridView1.EditMode = DataGridViewEditMode.EditOnEnter;

关于c# - DataGridView Winforms 填充 ComboBoxCell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5850221/

相关文章:

.net - 为什么 .NET Sql Server 访问速度比 Excel Interop 快?

c# - 应用程序配置修改未反射(reflect)在代码中

c# - 在类名中添加模型值?

c# - 使用 linq-to-sql 删除记录列表

c# - Serializable 和 DataContract(不是对比?)

.net - 默认的 netcore docker-compose 模板如何工作?

c# - 公开按钮控件的 OnClick 事件的自定义控件

c# - 使用 backgroundWorker 下载文件

c# - 向 C# 数组添加元素

c# - 在 map 上显示圆圈会显示拉长的椭圆形