问题标签 [datagridviewcomboboxcell]
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.
winforms - 根据其他单元格选择动态地将 DataGridViewComboBoxCell 的 DataSource 设置为过滤的 DataView
我一直在寻找一种方法来执行以下操作,但无济于事。我想出了一个可行的解决方案,但我想知道是否有更好的方法来处理它。
问题:
我正在使用具有两个 DataGridViewComboBoxColumn、col1 和 col2 的 DataGridView。
col1 已将其 DataSource 设置为 DataTable。根据 col1 中给定单元格的选择,我希望同一行中的各个 col2 单元格将其 DataSource 设置为 col2 的 DataSource 的过滤 DataView。
我当前实现的缩写代码可能更好地帮助描述我正在尝试做的事情:
然后我将事件处理程序定义为:
最后一部分是我关心的。动态切换cell2的DataSource时,如果cell2的当前选择没有出现在新的DataView中,那么会抛出异常:
System.ArgumentException:DataGridViewComboBoxCell 值无效。
为了避免这种情况,我将数据源设置为宏数据表(包含所有可以根据单元格1的选择显示的值),将单元格2的选定值更改为数据视图中的第一个结果,然后设置单元格2的数据源要说DataView。这一切都确保了单元格永远不会有无效的选择,并且可以按预期工作。
我的问题是,有没有更好/更简单的方法来做到这一点?就我的使用而言,此代码仅在创建新行时被激活,因此在给定表单中它不会被执行多次。但是,如果有更好的方法或改进它的一些建议,我将不胜感激!
(这里的第一个问题,所以我也对发布的建议持开放态度......对任何失误表示歉意)
编辑(提供表结构 - 还将“BoundID”更改为“ID1”以避免混淆):
DataGrid 的表结构是:
MainTableID 整数
ID1 int -- 这是 col1 的外键
ID2 int -- 这是 col2 的外键
第1列的表结构:
ID1 整数
显示 1 varchar(50)
第2列的表结构:
ID2 整数
显示2 varchar(50)
ID1 int -- 这是 col1 的外键
更新: 我根据 Mohsen 的建议重新定义了 CellValueChanged 事件处理程序:
我已经为 DataError 添加了一个事件处理程序,就像他建议的那样:
这似乎完美无缺。
c# - 如何为正在更改的 ComboCoxColumn 单元格添加事件
我有一个DataGridView
, 里面有几个ComboBoxColumns
。有没有办法创建一个事件,这样每次ComboBoxColumn
输入一个单元格并选择一个项目时,事件就会触发?到目前为止,我能弄清楚的是:
这没有做任何事情。
c# - 在 C# 中的 Datagridview 中编辑 Combobox 项
我有一个Datagridview
Winform。其中一列是Combobox
. 除了能够从下拉列表中选择条目之外,是否可以设置属性以便用户可以输入。
我能够Combobox
在属性窗口中进行以下更改的项目上执行此操作:
谢谢
c# - 在 C# 中未触发 Datagridview 的 CellValuePushed 事件
我DataGridView
在一个带有多个控件的winforms应用程序中。ComboBox
我将其转换为ComboBox
可编辑。
但是,从那时起,列中的更改不会在基础类对象中更新。
当我调试代码时,我注意到CellValuePushed()
在单元格中进行更改时未调用事件处理程序ComboBox
。
知道我缺少什么吗?
谢谢
我注意到,当我在 中输入值时ComboBox
,CellValueNeeded()
正在调用事件处理程序。
请注意,在屏幕截图中,当我尝试在组合框单元格中输入数据时,CellValueNeeded()
会调用 eventhandler
更新 :
c# - 编辑 DataGridViewComboBoxColumn 并按 EnterKey 后如何防止进入下一行?
我有一个带有 DataGridView 的表单。在 Datagridview 我有一些 DataGridViewComboBoxColumn 和一些 DataGridViewTextBoxColumn。问题是我想使用Enter而不是 Tab 从一个单元格切换到另一个单元格,即使我在单元格中处于编辑模式。
我成功地为文本框列实现了此答案 https://stackoverflow.com/a/9917202/249120中提供的解决方案,但我无法为组合框列实现它。怎么做?
重要提示:对于文本框列,defaultCellStyle 必须具有“换行”属性为 True。它起作用了(当你按下回车时,就像你在按下一个选项卡一样)所以我决定也用“CustomComboBoxColumn”来测试它,我尝试创建一个与 CustomTextBoxColumn 非常相似的代码,但它不起作用:
这样做的最终结果是没有属性 DataSource、DisplayMember、Items、ValueMember 的 ComboBoxColumn,但是当按下 Enter 时会转到下一个单元格。还有什么可做的?
c# - DataGridView 数据绑定
我举一个简单的例子来解释我想要什么:
我定义了一个名为 的类Student
,它有两个属性:Name和Subjects。
我创建了 Student 类的两个实例,例如:
然后我创建一个 List studentList:
我的问题是,有什么方法可以将它studentList
与 a进行数据绑定DataGridView
,如下所示:
第一列是学生姓名,第二列是combobox
显示学生所有科目的 a。
提前感谢您的时间。
c# - 添加新项目时 DataGridView 的问题
当我在 datagridview 上保存新项目时,该语句
显示值 -1。我怎样才能改变它以显示真实的身份证号码?
谢谢大家。
winforms - 以编程方式设置 C# Winforms 时 DataGridViewComboBoxCell 值未更新
我已经阅读了所有关于这个该死的控件(DataGridViewComboBoxCell)的类似帖子,并以编程方式设置它的值,但实施所有建议都没有奏效。我可能可以更改 UI 来解决这个问题,但我不喜欢被打败!
dgv 首先绑定到包含 BusinessRole 对象的绑定列表,然后组合框列绑定到来自存储库类的 BusinessArea 对象的基本列表。然后我遍历 bindinglist 并拉出绑定到 bindinglist 循环中当前项目的 dgv 行。通过该行,我进行数据库调用以查看 BusinessRole 实体是否与 BusinessArea 实体相关联。如果是,那么我想选择包含 BusinessAreas 的组合框列中的项目。
问题是,当加载网格时,所有数据都在那里,组合框填充了可用区域的列表,但是不显示任何设置的值。设置值的代码肯定会受到影响,并且我设置的值肯定存在于列表中。
没有数据错误,什么都没有。它只是拒绝使用我以编程方式设置的值更新 UI。
任何帮助将一如既往地不胜感激。
谢谢
c# - DataGridViewComboBox 单元格设置标签为每个项目
如何为 DataGridViewComboBox 单元格中的每个元素设置标签
我的 DataGridViewComboBox 单元格包含以下项目:
我想为 Apple、Orange、Mango 添加单独的标签
sql - PowerShell - DataGridView 选项
我很困惑,所以我希望有人可以在这里给我一些帮助。我正在尝试使用 PrimalForms Community Edition 2011 创建一个使用 DataGridView 的 Windows 窗体。我能够使用以下方法创建一个(无耻地从http://sev17.com/2009/08/02/building-powershell-guis-with-primal-forms/窃取):
这非常适合为 DataGridView 创建绑定,因为您实际上无法在 PrimalForms 本身内执行此操作[至少据我所知]。我很好奇的是:
您可以省略 DataGridView 中的任何列吗?如果可能的话,我宁愿向最终用户隐藏一些专栏,并在幕后以编程方式操纵它们。我对 SQL 并不感冒,所以这很可能是超级基础和简单的东西。
我有一列我想作为一个组合框。我看到在 C# 中他们可以选择列类型 DataGridViewComboBoxColumn,但我不知道如何在 PowerShell 中进行设置。有没有人希望对此有任何建议/解决方案?
提前感谢您在这里提供的任何帮助/见解/建议。