如何验证ADO.NET DataTable上的计算列

时间:2012-04-02 19:41:31

标签: winforms ado.net strongly-typed-dataset

根据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控件?

谢谢

1 个答案:

答案 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();
}