private void CalculateField(RecalculateFieldWrapper field) { var eval = new ExpressionEvaluator(); if (!eval.ParseForTable(field.Expression, Model)) { field.SetResult(RecalculateFieldResult.Failure, "Failed to parse."); return; } var count = 0; var rowCount = Model.NumRows; bool errorReported = false; for (var i = 0; i < rowCount; i++) { if (!eval.CalculateForTableRow(i, field.Index)) { if (!errorReported) { // report only the very first error string s = "Failed to calculate expression for a row: " + i + ". " + eval.LastErrorMessage; Logger.Current.Info(s); errorReported = true; } continue; } count++; } if (count == rowCount) { field.SetResult(RecalculateFieldResult.Success, "Success"); } else { field.SetResult(RecalculateFieldResult.SomeRows, string.Format("{0} from {1}", count, rowCount)); } }
public void UpdateField(RecalculateFieldWrapper wrapper) { recalculateFieldsGrid1.Adapter.ReReadRecord(wrapper); recalculateFieldsGrid1.Refresh(); }