void columnEvent(ColumnChangeEventType pEvent, object sender, DataColumnChangeEventArgs e) { if (e.Row.RowState != DataRowState.Detached) { if (!blockPointMain.isBlocked()) { string col = e.Column.ColumnName; DataRow row = getRow(pEvent, e.Column.ColumnName); if (row != null) { List <ITableColumnChange> listA = (List <ITableColumnChange>)row[colACTIVITY]; List <IRowValidator> listV = (List <IRowValidator>)row[colVALIDATOR]; List <IBlockPoint> listB = (List <IBlockPoint>)row[colBLOCK]; for (int i = 0; i < listA.Count; ++i) { if (listB[i].block()) { try { if (listV[i].check(e.Row)) { listA[i].columnChange(e); } } finally { listB[i].unblock(); } } } } } } }
DataRow getRow(ColumnChangeEventType pEvent, string col) { return(tableRel.Rows.Find(new object[] { pEvent, col })); }
public void addRelation(string[] pCols, ITableColumnChange pActivity, IBlockPoint pBlock, IRowValidator pValidator, ColumnChangeEventType pEvent) { pValidator = (pValidator == null) ? new RowValidatorTrue() : pValidator; try { blockPointMain.block(); for (int i = 0; i < tableTarget.Rows.Count; ++i) { DataRow row = tableTarget.Rows[i]; if (pValidator.check(row)) { pActivity.initForColumnChanged(row); } } } finally { blockPointMain.unblock(); } foreach (string col in pCols) { add(col, pActivity, pBlock, pValidator, pEvent); } }
void add(string col, ITableColumnChange pActivity, IBlockPoint pBlock, IRowValidator pValidator, ColumnChangeEventType pEvent) { { DataRow row = getRow(pEvent, col); if (row == null) { row = tableRel.Rows.Add( new object[] { pEvent, col, new List <ITableColumnChange>(), new List <IRowValidator>(), new List <IBlockPoint>(), }); } ((List <ITableColumnChange>)row[colACTIVITY]).Add(pActivity); ((List <IRowValidator>)row[colVALIDATOR]).Add((pValidator == null) ? new RowValidatorTrue() : pValidator); ((List <IBlockPoint>)row[colBLOCK]).Add(pBlock); } { tableRelDistinct.Rows.Add( new object[] { pActivity, pValidator }); } }
public void addRelation(string[] pCols, ITableColumnChange pActivity, IRowValidator pValidator, ColumnChangeEventType pEvent) { addRelation(pCols, pActivity, new BlockPoint(), pValidator, pEvent); }