问题标签 [datagridviewcomboboxcolumn]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4243 浏览

c# - DataGridViewComboBoxColumn - 必须单击单元格两次才能显示组合框

我正在使用DataGridView, 使用带有几列(包括一DataGridViewComboBoxColumn列)的设计器创建。

有点烦人的是,我必须在每个单元格上单击两次甚至三次才能显示下拉列表:

  1. 如果我单击文本部分,则需要单击3次!

在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

  1. 如果我单击向下箭头,只需单击两次:

在此处输入图像描述 在此处输入图像描述

我认为这是由于单元格使用第一次单击来获得焦点,但是有没有办法解决这个问题,所以单击单元格会立即显示组合框?我注意到不会DataGridViewCheckBoxColumn发生使用相同的问题...单击复选框会立即切换它,无论该单元格是否具有焦点。

0 投票
1 回答
1320 浏览

c# - 如何根据行 ID 填充 ComboBox DataGridView

我用DataGridViewComboBoxColumnDataGridView. 我需要的是ComboBox根据每个 Row ID过滤值。

Si 它应该看起来像

所以我所做的是DataGridViewComboBoxColumn用空创建,DataSource如下面的代码所示

我假设为事件中的每个单元格 填充Row 。 ComboBoxCellFormatting

我这样做是因为我无法在单元格ComboBox中显示所有可能的值,因为它们不适合每一行。所以这个想法不是在ComboBox中显示 1000 个值,而是只显示Row ID引用的值。

我的目标是每个单元格都有自己的值列表,但来自同一个 List()。

任何线索如何做到这一点?


更新#1

感谢Marco Guignard ,我刚刚开始编写代码!我只是为 C# 版本更新它。


更新#2

实际上,我已经用类似的方法完成了它,但使用了不同的事件。

因此,最初在列创建逻辑上,我使用数据库表中所有可能的记录来初始化DataGridView值,并在DataGridView出现时看到它。

当我们必须编辑组合框单元格时,我们只需应用对象允许值列表。

0 投票
1 回答
61 浏览

c# - c# DataGridViewComboBoxColumn selectedValue 遍布整行

我遇到了以下问题:

我用 7 DataGridViewComboBoxColumn 构建了一个 dataGridView,添加了以下代码

我得到以下 dataGridView :

在此处输入图像描述

那么如果我在一个组合框中选择了一个新值:

在此处输入图像描述

如果 ai 滚动(使用水平滚动)(或者如果我打开另一个选项卡并返回此选项卡),那么整行将获得相同的 selectedValue :

在此处输入图像描述

我该如何解决这个问题?

0 投票
2 回答
1337 浏览

vb.net - DataGridView 单元格格式错误

DataGridView 再次抓住了我,我无法弄清楚为什么我使用以下代码出现单元格格式错误。我在网上找到的所有解决方案都不起作用/不适合。在加载时我设置:

这些列是通过 VS GUI 设置的(此列:名称 = 'ColAlign',宽度 = 100,DataPropertyName = 'ColAlign',列类型 = DataGridViewComboBoxCell 等)。它在将数据填充到 DGV 之前的断点处工作,我看到提供了一个有效的数据表:

在此处输入图像描述

当我没有将任何数据加载到列中时,我可以看到正确的 ComboBox 选择:

在此处输入图像描述

但是,如果我在此列的数据源中添加数据,则会出现单元格格式错误(说该值无效)并且该值显示为显示成员文本:

在此处输入图像描述

数据库列不可为空(此时始终为 1),并且为 INT。我什至尝试对它进行投射,以确保它没有混淆,即作为字符串:

尽管如此,我还是得到了错误,我不知道什么是错误的,但显然数据表中的 1 与数据库结果集中的 1 不同。过去我遇到过 Int16 与 INT 不匹配的问题,但 Int32 总是在数据库中与 INT 不匹配。乃至:

...不起作用。顺便说一句,我只是这样分配数据:

通常,它必须是非常简单的东西,我所缺少的。我什至会感谢提示如何进一步调试此类问题。

编辑:

我还尝试创建一个按钮并在 onClick 中编写了一个代码:

这很好用。

编辑2:

我在 DataSet 和 DataSource 之间插入了一个带有固定数据类型列的 DataTable(如果是 ComboBoxColumns,则为 int32),这应该排除提供了错误的数据类型并且它仍然不起作用......

编辑 3

另一个调试:

DataSet Visualizer 中的 dtTemp 看起来不错,并且在 MsgBox 中检查的所有内容都是预期的(ValueMember = "ID",DisplayMember = "Text",DataPropertyName = "ColAlign",Value = 2 /我将其设置为 2 以进行更改/)。

解决方法:

唯一可行的方法是将带有 ComboBoxCell 的列留空,并在设置 DGV 数据源后手动填充它们,将它们缩小到 Int32(请注意,它们已经在 SQL 和 dtGrid 中缩小了):

由于我很少将 DGV 与 ComboBoxCell 一起使用,因此我可以接受这个“解决方案”。

编辑 4 / 变通方法 2

我创建了第二个相同的(结构)dtGrid2,并将值逐行和逐个单元格复制到第二个中,瞧——它适用于 dtGrid2而不适用于原始 dtGrid!因此,当我从数据库中提取数据时,原始正确的列数据类型会被重新输入错误的内容。我怀疑这仅发生在 SQLiteDataAdapter 上,因为我过去没有使用 SqlDataAdapter 体验过它。一个简化的代码来解释:

0 投票
0 回答
710 浏览

c# - C# WinForms DataGridView:下拉打开/关闭事件?

无论最终值更改如何,是否有机会知道 DataGridViewComboBoxColumn 的下拉列表何时打开(和关闭)?

我问是因为我想在下拉列表打开时停止底层 DataSource 的更新。DataSource 每秒更新一次,我发现相当烦人的是,当我打开组合列表时,即使当鼠标指针位于另一个值上时,它内部的焦点也会在 DataSource 刷新时继续移动到实际值。

谢谢!

0 投票
1 回答
45 浏览

c# - DataGridViewComboBoxColumn 从其他列获取值

我从 sql 数据库中提取数据并用它填充 datagridView1:

用户将能够编辑 1 列中的值,但该列的可能值只有 Null、0、1 或 2,因此为了防止输入不正确的值,我决定做一个 ComboBoxColumn:

我将用 .Visible = false; 隐藏的另一个现在不必要的列 我希望 ComboBoxColumn 显示来自将隐藏的其他列的数据库值,我似乎无法让它工作。

我试过的:

那些不起作用但没有错误消息。这不起作用并产生错误“值不正确”

0 投票
1 回答
60 浏览

c# - 使用 List 的值填充 DataGridView 内的组合框

我正在尝试在 DataGridView 中添加一个组合框,如果我刷新另一个以 Windows 形式拥有的组合框,我管理此方法的方法会重复很多次,我会再次运行此方法

我不断收到我在设计器中使用以下代码处理的错误:

在后面的代码中:

有了这一切,我看不到我的列表填充组合框,这里还缺少什么?

非常感谢你提前

PS:我在 Quickwatches 中添加了“getApplication”对象,它从我的列表中接收所有值,所以一切都很好。

0 投票
1 回答
15 浏览

c# - 为 DataGridViewComboBoxColum 列赋值

使用类似的代码:

我无法为 DataGridViewComboBoxColum 赋值。我该怎么做?

在此先感谢,西蒙

0 投票
1 回答
104 浏览

vb.net - 如何填充 DataGridViewComboBoxColumn?

对不起,如果这应该是显而易见的,但这是我使用 VB.NET 的第一个项目,有些事情仍然超出我的能力范围。

我正在尝试在 DataGridView 中设置一个组合框,但我不断收到

System.ArgumentException:DatagridviewComboBoxCell 值无效

我已经在谷歌上搜索了 2 个小时,对我来说,我似乎设置正确,但可能有些不对劲。

据我了解,它应该是这样的:

指定列中组合框的数据源和键/显示值

是链接到 DataGridView 的 DataSource 和 ComboBox 的 ValueMember 的列的名称,并且应该在不同的行上显示不同的选择。

如果我从代码中删除 DataPropertyName,我不会再收到错误,但我也会得到空的组合框。

0 投票
1 回答
104 浏览

c# - DataGridViewComboBoxColumn 中的选定项目始终检索第一个值

假设我拥有的数据是'valuenumber1', 'valuenumber2', 'valuenumber3'.

我遇到一个问题,即何时何'valuenumber2''valuenumber3'选择下一行,但是上一个行(具有'valuenumber2'OR 'valuenumber3')将变为变为'valuenumber1',这导致所有创建的行只有一个值'valuenumber1'

例如(请原谅我的图片编辑):

在此处输入图像描述

我的代码示例:

注意:'cto' 是连接到 Oracle

我尝试使用 EditingControlShowing 事件处理程序,但它不起作用:

由于 datagridview 中的 ComboBox 没有 SelectedIndex,是否还有其他我不知道的解决方案,即使用其他事件处理程序?