问题标签 [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.
c# - 如何根据行 ID 填充 ComboBox DataGridView
我用DataGridViewComboBoxColumn
在DataGridView
. 我需要的是ComboBox
根据每个 Row ID过滤值。
Si 它应该看起来像
所以我所做的是DataGridViewComboBoxColumn
用空创建,DataSource
如下面的代码所示
我假设为事件中的每个单元格 填充Row 。 ComboBox
CellFormatting
我这样做是因为我无法在单元格ComboBox中显示所有可能的值,因为它们不适合每一行。所以这个想法不是在ComboBox中显示 1000 个值,而是只显示Row ID引用的值。
我的目标是每个单元格都有自己的值列表,但来自同一个 List()。
任何线索如何做到这一点?
更新#1
感谢Marco Guignard ,我刚刚开始编写代码!我只是为 C# 版本更新它。
更新#2
实际上,我已经用类似的方法完成了它,但使用了不同的事件。
因此,最初在列创建逻辑上,我使用数据库表中所有可能的记录来初始化DataGridView
值,并在DataGridView
出现时看到它。
当我们必须编辑组合框单元格时,我们只需应用对象允许值列表。
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 体验过它。一个简化的代码来解释:
c# - C# WinForms DataGridView:下拉打开/关闭事件?
无论最终值更改如何,是否有机会知道 DataGridViewComboBoxColumn 的下拉列表何时打开(和关闭)?
我问是因为我想在下拉列表打开时停止底层 DataSource 的更新。DataSource 每秒更新一次,我发现相当烦人的是,当我打开组合列表时,即使当鼠标指针位于另一个值上时,它内部的焦点也会在 DataSource 刷新时继续移动到实际值。
谢谢!
c# - DataGridViewComboBoxColumn 从其他列获取值
我从 sql 数据库中提取数据并用它填充 datagridView1:
用户将能够编辑 1 列中的值,但该列的可能值只有 Null、0、1 或 2,因此为了防止输入不正确的值,我决定做一个 ComboBoxColumn:
我将用 .Visible = false; 隐藏的另一个现在不必要的列 我希望 ComboBoxColumn 显示来自将隐藏的其他列的数据库值,我似乎无法让它工作。
我试过的:
那些不起作用但没有错误消息。这不起作用并产生错误“值不正确”
c# - 使用 List 的值填充 DataGridView 内的组合框
我正在尝试在 DataGridView 中添加一个组合框,如果我刷新另一个以 Windows 形式拥有的组合框,我管理此方法的方法会重复很多次,我会再次运行此方法
我不断收到我在设计器中使用以下代码处理的错误:
在后面的代码中:
有了这一切,我看不到我的列表填充组合框,这里还缺少什么?
非常感谢你提前
PS:我在 Quickwatches 中添加了“getApplication”对象,它从我的列表中接收所有值,所以一切都很好。
c# - 为 DataGridViewComboBoxColum 列赋值
使用类似的代码:
我无法为 DataGridViewComboBoxColum 赋值。我该怎么做?
在此先感谢,西蒙
vb.net - 如何填充 DataGridViewComboBoxColumn?
对不起,如果这应该是显而易见的,但这是我使用 VB.NET 的第一个项目,有些事情仍然超出我的能力范围。
我正在尝试在 DataGridView 中设置一个组合框,但我不断收到
System.ArgumentException:DatagridviewComboBoxCell 值无效
我已经在谷歌上搜索了 2 个小时,对我来说,我似乎设置正确,但可能有些不对劲。
据我了解,它应该是这样的:
指定列中组合框的数据源和键/显示值
是链接到 DataGridView 的 DataSource 和 ComboBox 的 ValueMember 的列的名称,并且应该在不同的行上显示不同的选择。
如果我从代码中删除 DataPropertyName,我不会再收到错误,但我也会得到空的组合框。
c# - DataGridViewComboBoxColumn 中的选定项目始终检索第一个值
假设我拥有的数据是'valuenumber1'
, 'valuenumber2'
, 'valuenumber3'
.
我遇到一个问题,即何时何'valuenumber2'
地'valuenumber3'
选择下一行,但是上一个行(具有'valuenumber2'
OR 'valuenumber3'
)将变为变为'valuenumber1'
,这导致所有创建的行只有一个值'valuenumber1'
。
例如(请原谅我的图片编辑):
我的代码示例:
注意:'cto' 是连接到 Oracle
我尝试使用 EditingControlShowing 事件处理程序,但它不起作用:
由于 datagridview 中的 ComboBox 没有 SelectedIndex,是否还有其他我不知道的解决方案,即使用其他事件处理程序?