public void Expand() { int pos = 0; DocumentParser.RaiseScanStartEvent(new ScanStartEventArgs(tableName, DocumentParser.DataManager)); foreach (DataRow row in this.Table.Rows) { #region BeforeScanRecord event bool isMatch = MatchesCondition(); BeforeScanRecordEventArgs beforeScanEvArgs = new BeforeScanRecordEventArgs(row, pos, DocumentParser.DataManager, isMatch); DocumentParser.RaiseBeforeScanRecordEvent(beforeScanEvArgs); if (beforeScanEvArgs.Cancel) { break; } if (beforeScanEvArgs.Skip) { pos++; DocumentParser.DataManager.IncrementCurrentRecord(this.TableName); continue; } #endregion if (isMatch) { foreach (IControlBlock cb in Children) { cb.Expand(); } } #region AfterScanRecord event AfterScanRecordEventArgs afterScanEvArgs = new AfterScanRecordEventArgs(row, pos, DocumentParser.DataManager, isMatch); DocumentParser.RaiseAfterScanRecordEvent(afterScanEvArgs); if (afterScanEvArgs.Cancel) { break; } #endregion pos++; DocumentParser.DataManager.IncrementCurrentRecord(TableName); } DocumentParser.DataManager.ResetCurrentRecord(tableName); DocumentParser.RaiseScanEndedEvent(new ScanEndedEventArgs(tableName, DocumentParser.DataManager)); }
void Dc_BeforeScanRecord(object sender, BeforeScanRecordEventArgs e) { if (e.TableName == "L" && //The invoice lines are being scanned e.MatchesScanCondition) //and the current record matches the scan condition { DataRow row = ((DataRow)e.Record); double extendedPrice = Convert.ToDouble(row["units"]) * Convert.ToDouble(row["unitPrice"]); //First time adds the variable. Following times, automatically updates it. e.DataManager.AddDouble(_extprice, extendedPrice); double subTotal = e.DataManager.GetDouble(_subtotal); subTotal += extendedPrice; e.DataManager.AddDouble(_subtotal, subTotal); } }
void Dc_BeforeScanRecord(object sender, BeforeScanRecordEventArgs e) { //Decide if must show group header if (e.Record[1].ToString() != currentVendor) { e.DataManager.AddInt32("showVendor", 1); currentVendor = e.Record[1].ToString(); } else { e.DataManager.AddInt32("showVendor", 0); } int avail = e.DataManager.GetInt32("avail"); int unavail = e.DataManager.GetInt32("unavail"); if (e.Record[3].ToString() == "Yes") { avail++; } else { unavail++; } e.DataManager.AddInt32("avail", avail); e.DataManager.AddInt32("unavail", unavail); e.DataManager.AddInt32("tot", avail + unavail); //Decide if must shows totals per group DataRow row = e.DataManager.GetNextRecord(e.TableName); if (row != null) { if (e.Record[1].ToString() != row[1].ToString()) { e.DataManager.AddBoolean("groupEnd", true); } else { e.DataManager.AddBoolean("groupEnd", false); } } else { e.DataManager.AddBoolean("groupEnd", true); } }
internal void RaiseBeforeScanRecordEvent(BeforeScanRecordEventArgs e) { BeforeScanRecord?.Invoke(this, e); }
internal void RaiseBeforeScanRecordEvent(BeforeScanRecordEventArgs e) { Creator.RaiseBeforeScanRecordEvent(e); }