我在一个 Windows 窗体应用程序中工作,其中有一个 DataGridView 控件,其中一个列是 Combobox 类型,我可以毫无问题地用数据填充 ComboBox。
我遇到的问题是我需要选择包含 Combobox 的第一个元素,在这种情况下,<<Seleccione>>
我无法一见钟情,ComboBox 中什么也看不到,直到我单击以显示 ComboBox并且能够选择项目。
这样我加载 ComboBox
public IEnumerable<UniversalExtend> SelectList(Expression<Func<UnidadMedida, UniversalExtend>> source)
{
return _unidadMedidaRepository.SelectList(source);
}
public IEnumerable<UniversalExtend> ListaUnidadMedidas
(Expression<Func<UnidadMedida, UniversalExtend>> source)
{
var listaItem = SelectList(source).ToList();
listaItem.Insert(0, new UniversalExtend() { Id = -1, Descripcion = "<<<Seleccione>>>" });
return listaItem;
}
持久性
public IEnumerable<UniversalExtend> SelectList(Expression<Func<T, UniversalExtend>> source)
{
using (var context = new BusinessContext())
{
var result = context.Set<T>().AsNoTracking()
.Select(source).ToList();
return result;
}
}
将数据绑定到 ComboBox
dataGridView1.AutoGenerateColumns = false;
DataGridViewComboBoxColumn cboColMedida = dataGridView1.Columns["colCombo"] as DataGridViewComboBoxColumn;
cboColMedida.DataSource =
_saUnidadMedida.ListaUnidadMedidas(
x => new UniversalExtend() {Id = x.UnidadMedidaId, Descripcion = x.Abreviacion}).ToList();
cboColMedida.DisplayMember = "Descripcion";
cboColMedida.ValueMember = "Id";
我一直在使用您的代码,答案非常简单,只需在将数据绑定到您的组合框后立即为组合框单元格分配一个值(在您的示例中,给它您在 Id 中声明的值 -1)。
换句话说,在您分配 DataSource 的代码部分中,它看起来像这样:
每次添加新行时都会进行选择的函数是:
我希望你能解决问题。
一切顺利
您需要的是捕获组合框中列的默认空值:
在完成将数据填充到DataGridViewComboBoxColumn之后