- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有 DataGridViewComboBoxCell 和一个 DataTable。 Table I中的数据使用DataSource绑定(bind)DataGridViewComboBoxCell,并设置ValueMember、DisplayMember。
private void Form1_Load(object sender, EventArgs e)
{
DataGridViewComboBoxCell comboBoxCell = new DataGridViewComboBoxCell();
dataGridView1.Rows[0].Cells[0] = comboBoxCell;
comboBoxCell.DataSource = dataTable;
comboBoxCell.ValueMember = "ID";
comboBoxCell.DisplayMember = "Item";
}
如何在加载表单时以编程方式设置单元格中的值?在简单的 ComboBox 中,我知道一个属性 SelectedIndex。我试过 comboBoxCell.Value = ...;但它给出了一个异常(exception)。并尝试过
private void dataGridView1_CellFormatting(object sender,
DataGridViewCellFormattingEventArgs e)
{
e.Value = 1;
}
它在单元格中设置了一个新值,但我需要选择一个值。
表单已加载,单元格为空。
还有 ComboBox 中的一些数据。
当我将此代码 dataGridView1.Rows[0].Cells["ComboColumn"].Value = "1";
放在 comboBoxCell.DisplayMember = ...(见上文)之后时,它工作正常。
ID 列中的值“1”对应于 Items 列中的值“Second”。因此,我得到了正确的结果。
对不起我的英语和我的新手代码:)
最佳答案
不要向网格中添加单元格,而是添加 DataGridViewComboBox
列。
DataGridViewComboBoxColumn c = new DataGridViewComboBoxColumn();
c.Name = "ComboColumn";
c.DataSource = dataTable;
c.ValueMember = "ID";
c.DisplayMember = "Item";
dataGridView1.Columns.Add(c);
要选择特定值,您可以设置给定单元格的 Value 属性。
dataGridView1.Rows[rowIndexYouWant].Cells["ComboColumn"].Value = 1;
注意这里的类型很重要!在评论中你说你得到一个 System.FormatException
。这可能是由于将错误的类型设置为值造成的。
当您将该值设置为 1 时,您正在分配一个 int - 如果由于某种原因您在 ID 列中有字符串,您将得到您看到的 System.FormatException
异常。
如果类型不同,您需要更新 DataTable 定义或将值设置为字符串:
dataGridView1.Rows[rowIndexYouWant].Cells["ComboColumn"].Value = "1";
DataGridView
设置了 DataSource 后,通常最容易使用它。在这种情况下,您可以使用 DataPropertyName 属性将 ComboBoxColumn 绑定(bind)到网格的数据源。
c.DataPropertyName = "GridDataSourceColumnName";
这允许从网格数据源获取列值,并允许更改列以直接更改该数据源。
最后,不要在此处使用 CellFormatting 事件 - 此事件不适用于此类用途。通常最好在 DataBindingComplete 事件中(如果您只想完成一次)或在某些事件(如需要 DefaultValues 或 RowValidating)期间执行此类工作。
通过使用 CellFormatting,您可能会使用户无法手动编辑组合框。
关于c# - 如何在 DataGridViewComboBoxCell 中选择一个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11657345/
应用程序启动时DataGridViewComboBoxCell显示正常 选择值后,当前行和后续行的背景将变为黑色(见下文)。我使用了默认的 DataGridView 并且没有字体操作 我尝试更改 Ce
我有一个使用多个 DataGridView 控件的项目。大多数单元格都属于 DataGridViewTextBoxCell 说服力。我这样声明我的控件: Dim MyCell as DataGridV
我的 DataGridView 上有一个 DataGridViewComboBoxColumn。这是我的自定义单元格绘制处理程序: private void dataGridView_CellPain
我有两个在运行时添加的 DataGridViewComboBoxColumn 我需要第一个 DataGridViewComboBoxColumn 的项目在 gridview 的所有行中保持相同但我希望
组合框默认显示空白字段,即使组合框填充了多个值也是如此 ColumnSpeed.DataSource = speedList; ColumnSpeed.ValueType = typeof(strin
我们的 DataGridView 中有一列,用户可以从组合框中为其选择一个值 (DataGridViewComboBoxColumn)。我们有一些用于选择的验证逻辑(覆盖 OnCellValidati
我有一个 DataGridView,其中有一列作为 ComboBox这是我用来创建列然后为每一行更新 DataSource 的代码。 var dTable = new DataTable(); dTa
我正在使用 Datagridview,通过设置 DataPropertyNames 部分由数据源填充。部分由我在代码中填写。我有一个 DataGridViewComboBoxColumn,当我单击
为了调出 DataGridViewComboBoxCell 的菜单,我首先必须单击: 1)我要编辑的单元格所在的行 2)在我要编辑的单元格内 3)我想再次编辑,以打开单元格的组合框。 如果已经选择了另
这就是我的情况。我有一个 DataGridView,它有两列,我试图将它们设置为 DataGridViewComboBoxColumns,称为“已接收”和“缺货”。 这些组合框的目的是创建一个下拉菜单
我需要将数据库中的不同值添加到表 1(id、名称、...)中的 DataGridViewComboBoxColumn,并且必须选择值(名称)。 我的代码: SqlDataAdapter coursea
这是我的代码: private class Person { private string myName; privat
我在设置 DataGridViewComboBoxCell 的值时遇到问题。 datagridview 列与选项/值绑定(bind),但是当我尝试使用 dgv.Rows.Add 为 comboBoxC
我知道这可能是重复的,但我一直无法找到有效的解决方案。我有一个带有组合框列的数据 GridView 。当我不尝试设置组合框列的值时,一切都很好(即组合框列正在填充)。当我尝试设置该值时,出现臭名昭著的
所以我的目标是一旦用户单击下拉列表中的项目,单元格将自动调用 EndEdit()。最奇怪的是,下面的代码将在我下拉的第 2-n 个 ComboBoxesCells 上工作,并从中选择值,但绝不是第一个
我在 C# winform 应用程序中有一个带有 datagridviewcomboboxcell 的 datagridview。因为 CellValueChanged 事件触发,所以我可以很容易地捕
我有 DataGridViewComboBoxCell 和一个 DataTable。 Table I中的数据使用DataSource绑定(bind)DataGridViewComboBoxCell,并
我一直在上下寻找执行以下操作的方法,但无济于事。我提出了一个可行的解决方案,但想知道是否有更好的处理方法。 问题: 我正在使用具有两个 DataGridViewComboBoxColumn、col1
我一天中的大部分时间都在为此工作,但解决方案仍然让我难以捉摸。我的 Winform 应用程序包含一个 DataGridView其中两列是ComboBox下拉列表。奇怪的是,DataGridView似乎
我有一个窗体 DataGridView包含一些 DataGridViewComboBoxCell使用 DataSource 绑定(bind)到源集合的 s , DisplayMember和 Value
我是一名优秀的程序员,十分优秀!