diff --git a/PROMS/Formats/fmtall/VEGPBckStpsall.xml b/PROMS/Formats/fmtall/VEGPBckStpsall.xml index 0962e4de..5ac01487 100644 Binary files a/PROMS/Formats/fmtall/VEGPBckStpsall.xml and b/PROMS/Formats/fmtall/VEGPBckStpsall.xml differ diff --git a/PROMS/VEPROMS User Interface/frmVEPROMS.cs b/PROMS/VEPROMS User Interface/frmVEPROMS.cs index 1b170bd6..20138ced 100644 --- a/PROMS/VEPROMS User Interface/frmVEPROMS.cs +++ b/PROMS/VEPROMS User Interface/frmVEPROMS.cs @@ -637,7 +637,9 @@ namespace VEPROMS DisplayTabItem dti = GetTabContainingProcedure(pi.ItemID); if (dti != null) { - if (!dti.MyStepTabPanel.MyStepPanel.ContainsFocus) + _ = ItemInfo.ResetProcedure(pi.ItemID, true); + + if (!dti.MyStepTabPanel.MyStepPanel.ContainsFocus) dti.MyStepTabPanel.MyStepPanel.Focus(); foreach (EditItem eitm in dti.MyStepTabPanel.MyStepPanel.Controls.OfType()) diff --git a/PROMS/VEPROMS.CSLA.Library/Extension/ItemExt.cs b/PROMS/VEPROMS.CSLA.Library/Extension/ItemExt.cs index 6be5e7f9..ca4b14bf 100644 --- a/PROMS/VEPROMS.CSLA.Library/Extension/ItemExt.cs +++ b/PROMS/VEPROMS.CSLA.Library/Extension/ItemExt.cs @@ -3849,7 +3849,7 @@ namespace VEPROMS.CSLA.Library // When This occurs, it will cause a // "ThreadException ... Collection was modified; enumeration operation may not execute.” // ********************** - public static ProcedureInfo ResetProcedure(int procID) + public static ProcedureInfo ResetProcedure(int procID, bool resetindisplaytab = false) { // The following lines reload the procedure info cache ProcedureInfo newproc = ProcedureInfo.Get(procID, true); @@ -3867,24 +3867,28 @@ namespace VEPROMS.CSLA.Library ItemInfo newprocitem = Get(procID, true); newprocitem.RefreshConfig(); - //Reload all the child/sub items -#pragma warning disable S2971 // LINQ expressions should be simplified - need initial ToList to force enumeration - //otherwise will get a "Collection was modified; enumeration operation may not execute" error - List itemIDs = _CacheByPrimaryKey.Values.ToList().SelectMany(y => y).Where(t => t?.ActiveParent != null && (t.ActiveParent is ItemInfo) && t.MyProcedure.ItemID == procID).Select(x => (x.ActiveParent as ItemInfo).ItemID).Distinct().ToList(); -#pragma warning restore S2971 // LINQ expressions should be simplified - for (int index = 0; index < itemIDs.Count; index++) + if (!resetindisplaytab) { - ResetParts(itemIDs[index]); - } - - //reset the procedure config for all items attached to current procedure + //Reload all the child/sub items #pragma warning disable S2971 // LINQ expressions should be simplified - need initial ToList to force enumeration - //otherwise will get a "Collection was modified; enumeration operation may not execute" error - List pconfigrefresh_items = _CacheByPrimaryKey.Values.ToList().SelectMany(y => y).Where(t => t?.MyProcedure?.ItemID == procID).Distinct().ToList(); + //otherwise will get a "Collection was modified; enumeration operation may not execute" error + List itemIDs = _CacheByPrimaryKey.Values.ToList().SelectMany(y => y).Where(t => t?.ActiveParent != null && (t.ActiveParent is ItemInfo) && t.MyProcedure.ItemID == procID).Select(x => (x.ActiveParent as ItemInfo).ItemID).Distinct().ToList(); #pragma warning restore S2971 // LINQ expressions should be simplified - for (int index = 0; index < pconfigrefresh_items.Count; index++) - { - pconfigrefresh_items[index].MyProcedure = newproc; + for (int index = 0; index < itemIDs.Count; index++) + { + ResetParts(itemIDs[index]); + } + + //reset the procedure config for all items attached to current procedure +#pragma warning disable S2971 // LINQ expressions should be simplified - need initial ToList to force enumeration + //otherwise will get a "Collection was modified; enumeration operation may not execute" error + List pconfigrefresh_items = _CacheByPrimaryKey.Values.ToList().SelectMany(y => y).Where(t => t?.MyProcedure?.ItemID == procID).Distinct().ToList(); +#pragma warning restore S2971 // LINQ expressions should be simplified + for (int index = 0; index < pconfigrefresh_items.Count; index++) + { + pconfigrefresh_items[index].MyProcedure = newproc; + } + } //return the changed procedure info