根据MS,计算列(AKA表达式列)不会引发任何DataTable事件:
http://msdn.microsoft.com/en-us/library/w9y9a401%28v=vs.80%29.aspx,
这使得无法使用DataTable.ColumnChanging事件通过使用以下文档中记录的技术验证此列的值:
http://msdn.microsoft.com/en-us/library/ms171930%28v=vs.80%29.aspx
我想知道是否有人想过为这样的计算列添加某种形式的验证的方法,以便它可以在Windows窗体上使用标准的ErrorProvider控件?
谢谢
答案 0 :(得分:0)
假设您使用bindingsource
:
private void Asignar_Columna_Balance()
{
if (cataciones_BindingSource.Current == null) return;
var _fila_Actual = ((cataciones_BindingSource.Current as DataRowView).Row as DataSet_SKNCC_Reportes.REPORTE_CATACIONESRow);
if ((cataciones_BindingSource.Current as DataRowView).IsNew)
_fila_Actual["BALANCE"] = (_fila_Actual.AROMA + _fila_Actual.ACIDEZ + _fila_Actual.CUERPO + _fila_Actual.SABOR).ToString();
else
{
//FORCE REBINDING!!! PARA QUE FUNCIONE AL EDITAR UN BINDINGDOURCE!!!!
cataciones_Tabla_Lote.Columns["BALANCE"].Expression = null;
cataciones_Tabla_Lote.Columns["BALANCE"].Expression = "Aroma + Acidez + Cuerpo + Sabor";
}
//balance_Mask.Text = (_fila_Actual.AROMA + _fila_Actual.ACIDEZ + _fila_Actual.CUERPO + _fila_Actual.SABOR).ToString();
}