DataGridViewComboBoxCell值无效."属性数据源
本文关键字:属性 数据源 quot 无效 DataGridViewComboBoxCell | 更新日期: 2023-09-27 18:13:33
我有一个方法,更新包含DataGridViewComboBoxCell类型的列,早期的ComboBoxCell是空的,选择一个产品和ComboBoxCell是在添加新记录时更新的,但是当我修改它发送一个异常:"DataGridViewComboBoxCell值无效"当您重新分配DataSource属性时,则不需要。
这里的方法是:
private void CargarTipoGasto(ref DataGridViewComboBoxCell ComboColumn)
{
ComboColumn.DataSource = from oPro in dtContext.tblProducto
where oPro.ProductoId == objProducto.ProductoId
from oMat in dtContext.tblMatrizDeCuentasGD
where oMat.Partida.Substring(0,3) ==
oPro.tblObjetoGasto.ObjetoGastoId.Substring(0,3)
from oTipGas in dtContext.tblTipoGasto
where oMat.TipoGasto == oTipGas.TipoGastoId
select oTipGas;
ComboColumn.ValueMember = TIPOGASTO_ID;
ComboColumn.DisplayMember = TIPOGASTO_VALOR;
}
检查没有空值,引用是否正常
非常感谢您的帮助
我已经尝试过使用BindingList并得到了相同的异常Porfin可以解决这个问题
返回DataSource属性来指定要选择的项目,在索引缺失中没有找到,在那里,为了避免这个论坛,只指定有"DataError"到DataGridView的事件,并让您留空,这确实有效,但不是很清楚。
如何解决它是这个简单的方法。(字符串为空)
private void CargarTipoGasto(ref DataGridViewComboBoxCell ComboColumn)
{
ComboColumn.Value = string.Empty;
ComboColumn.DataSource = from oPro in dtContext.tblProducto
where oPro.ProductoId == objProducto.ProductoId
from oMat in dtContext.tblMatrizDeCuentasGD
where oMat.Partida.Substring(0,3) ==
oPro.tblObjetoGasto.ObjetoGastoId.Substring(0,3)
from oTipGas in dtContext.tblTipoGasto
where oMat.TipoGasto == oTipGas.TipoGastoId
select oTipGas;
ComboColumn.ValueMember = TIPOGASTO_ID;
ComboColumn.DisplayMember = TIPOGASTO_VALOR;
}
Thank you very much for the help (IBC)
点击这里http://msdn.microsoft.com/en-us/library/ms132679.aspx.
这是一个绑定列表。尝试将组合列数据放入绑定列表中,然后将组合列的数据源设置为绑定列表。当您需要更改组合框中的内容时,不要将列的数据源设置为不同的bindingList实例,而是尝试清除原始绑定列表中的所有项,然后逐个添加新项。当绑定列表的listChanged事件触发时,datagridviewcombobox应该更新。
当绑定列表包含很多项时,这可能有点麻烦。你可能想要创建一个继承自bindinglist的新类,并把这个放在里面:
public void clearAndAddList(List<T> newData)
{
this.Clear();
this.RaiseListChangedEvents = false;
foreach (var item in newData)
this.Add(item);
this.RaiseListChangedEvents = true;
this.ResetBindings();
}
这可以防止每次添加项时触发listchanged事件。ResetBindings似乎和触发listchanged有相同的效果。
这个问题可能有更好的解决方案,但这在过去对我有效。