如何从填充 DataGridViewComboBox 中选择一个项目

Posted

技术标签:

【中文标题】如何从填充 DataGridViewComboBox 中选择一个项目【英文标题】:How to select an item from a filling of a DataGridViewComboBox 【发布时间】:2011-11-04 19:48:48 【问题描述】:

项目:Winforms,.NET 框架:3.5 (Visual Studio 2008)

我的问题是:

我有一个带有几列的DataGridView,其中一些类型和另一种类型DataGridViewTextBoxColumnDataGridViewComboBoxColumnDataGridViewComboBoxColumn 列由实体框架提供的实体填充。

// Example
((System.ComponentModel.ISupportInitialize)(this.EntityBindingSource)).BeginInit();
this.EntityBindingSource.DataSource = this.dtContext.ExampleEntity;

this.ComboColumn.DataSource = this.EntityBindingSource;
this.ComboColumn.DataPropertyName = "ExampleId";
this.ComboColumn.DisplayMember = "Example";
this.ComboColumn.ValueMember = "ExampleId";

当你运行并加载表单时,很好

但是在运行时我想从DataGridViewComboBoxColumn的集合中选择一个项目时问题就来了

事件中的那个CellEndEdit

private void dgvDetalle_CellEndEdit(object sender, DataGridViewCellEventArgs e)

   DataGridViewCell cell = dgvDetalle.CurrentCell;
   DataGridViewComboBoxCell comboCell = (DataGridViewComboBoxCell)this.dgvDetalle.CurrentRow.Cells["ComboColumn"];

   // Attempt 1
   comboCell.Value = (ExampleEntity)comboTarifaImpuesto.Items[0];

   // Attempt 2
   comboCell.Value = ObjetoEntity;

   // Attempt 3
   comboCell.Value = "ValueExample"

   // Attempt 4
   comboCell.Value = ObjetoEntity.ToString();

尝试从组合框中选择一项 尝试选择实体的对象 尝试通过链或显示成员值进行选择

我无法选择所需的项目,我得到了异常:

DataGridViewComboBoxCell 值无效

【问题讨论】:

【参考方案1】:

感谢在另一个问题中提供的帮助: DataGridViewComboBoxCell Binding - "value is not valid"

我可以修复它,管重新输入DataGridViewComboBoxCell的以下属性:

comboCell.DisplayMember="Example";
comboCell.ValueMember="ExampleId";

正如我在类型列 DataGridViewComboBoxColumn 中指定的 我已经正确使用了这个属性。价值

comboCell.Value = ObjetoEntity.ExampleId.ToString();

【讨论】:

以上是关于如何从填充 DataGridViewComboBox 中选择一个项目的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Mysql 填充 Struct 类型映射

如何从填充部分停止 objcopy

如何从数组中填充 ListView?

如何从列表框中填充文本框?

如何从两个模型填充 ModelChoiceField

如何从firebase获取填充数据的表