internal void EvaluateExpressions()
{
// evaluates all expressions for all rows in table
// this improves performance by only computing expressions when they are present
// and iterating over the rows instead of computing their position multiple times
if ((null != _dependentColumns) && (0 < _dependentColumns.Count))
{
foreach (DataRow row in Rows)
{
// only evaluate original values if different from current.
if (row._oldRecord != -1 && row._oldRecord != row._newRecord)
{
EvaluateDependentExpressions(_dependentColumns, row, DataRowVersion.Original, null);
}
if (row._newRecord != -1)
{
EvaluateDependentExpressions(_dependentColumns, row, DataRowVersion.Current, null);
}
if (row._tempRecord != -1)
{
EvaluateDependentExpressions(_dependentColumns, row, DataRowVersion.Proposed, null);
}
}
}
}
DataTable::EvaluateExpressions ( DataColumn column ) : void | |
DataTable::EvaluateExpressions ( DataRow row, DataRowAction action, List |
internal void MergeTable(DataTable src) { bool enforceConstraints = false; if (!this.isStandAlonetable) { if (src.DataSet == this.dataSet) { return; } enforceConstraints = this.dataSet.EnforceConstraints; this.dataSet.EnforceConstraints = false; } else { if (src == this.dataTable) { return; } this.dataTable.SuspendEnforceConstraints = true; } if (this.dataSet != null) { if ((src.DataSet == null) || (src.DataSet.namespaceURI != this.dataSet.namespaceURI)) { this._IgnoreNSforTableLookup = true; } } else if (((this.dataTable.DataSet == null) || (src.DataSet == null)) || (src.DataSet.namespaceURI != this.dataTable.DataSet.namespaceURI)) { this._IgnoreNSforTableLookup = true; } this.MergeTableData(src); DataTable dataTable = this.dataTable; if ((dataTable == null) && (this.dataSet != null)) { if (this._IgnoreNSforTableLookup) { dataTable = this.dataSet.Tables[src.TableName]; } else { dataTable = this.dataSet.Tables[src.TableName, src.Namespace]; } } if (dataTable != null) { dataTable.EvaluateExpressions(); } if (!this.isStandAlonetable) { this.dataSet.EnforceConstraints = enforceConstraints; } else { this.dataTable.SuspendEnforceConstraints = false; try { if (this.dataTable.EnforceConstraints) { this.dataTable.EnableConstraints(); } } catch (ConstraintException) { if (this.dataTable.DataSet != null) { this.dataTable.DataSet.EnforceConstraints = false; } throw; } } }