private void AddSuborTabs(ViewElement tabsNode, Transaction trn, TransactionLevel fatherLvl) { // Tabs for each transaction level subordinated to the first one. List<Table> tablesInTrnLvls = new List<Table>(); foreach (TransactionLevel suborLvl in fatherLvl.Levels) { AddSuborTabTrnLevel(tabsNode, trn, suborLvl); tablesInTrnLvls.Add(suborLvl.AssociatedTable); } // Tabs for other subordinated tables (by FK). foreach (TransactionLevelRelation relation in fatherLvl.GetSubordinations()) { if (!fatherLvl.Levels.Contains(relation.RelatedLevel) && !tablesInTrnLvls.Contains(relation.RelatedTransaction.Structure.Root.AssociatedTable)) { string tabId = MakeTabUniqueId(fatherLvl, relation, tabsNode); AddSuborTabTransaction(tabsNode, tabId, relation); } } }