diff --git a/PROMS/Formats/fmtall/BVPS1all.xml b/PROMS/Formats/fmtall/BVPS1all.xml index ac856c57..840a5739 100644 Binary files a/PROMS/Formats/fmtall/BVPS1all.xml and b/PROMS/Formats/fmtall/BVPS1all.xml differ diff --git a/PROMS/Volian.Controls.Library/GridItem.cs b/PROMS/Volian.Controls.Library/GridItem.cs index 0010f49f..c26e35c3 100644 --- a/PROMS/Volian.Controls.Library/GridItem.cs +++ b/PROMS/Volian.Controls.Library/GridItem.cs @@ -1192,7 +1192,7 @@ namespace Volian.Controls.Library string linkstr = mro.Groups[2].Value; string[] roparts = linkstr.Split(" ".ToCharArray()); ContentRoUsage rousg = null; - int oldid = -1; + int oldid = -1; using (Item itm = MyItemInfo.Get()) { using (RODb rodb = RODb.GetJustRoDb(Convert.ToInt32(roparts[2]))) @@ -1203,7 +1203,7 @@ namespace Volian.Controls.Library int newid = Rtf.IndexOf("", indx); Rtf = Rtf.Remove(newid, 7); Rtf = Rtf.Insert(newid, string.Format("", rousg.ROUsageID)); - itm.Save(); + itm.Save(); // this will generate a new ROUsageID that we grab and put in the RO link in the RTF Rtf = Rtf.Replace(string.Format("", oldid), rousg.ROUsageID.ToString()); itm.Save(); MyItemInfo.MyContent.RefreshContentRoUsages(); @@ -1265,8 +1265,7 @@ namespace Volian.Controls.Library int newidt = Rtf.IndexOf("", indx); Rtf = Rtf.Remove(newidt, 7); Rtf = Rtf.Insert(newidt, string.Format("", ct.TransitionID)); - //Rtf = Rtf.Replace("", string.Format("", ct.TransitionID)); - itm.Save(); + itm.Save(); // this will generate a new TransitionID that we grab and put in the Transition link in the RTF Rtf = Rtf.Replace(string.Format("", oldidt), ct.TransitionID.ToString()); itm.Save(); MyItemInfo.MyContent.RefreshContentTransitions(); @@ -1277,6 +1276,9 @@ namespace Volian.Controls.Library } } MyFlexGrid[r, c] = Rtf; + // B2022-046 need to save context of each cell in the table after fixing RO and Transition links + // otherwise the RTF for that cell will revert back to previous data then the itm.Save() is called above + SaveContents(); } } c = c + 1; diff --git a/PROMS/Volian.Controls.Library/VlnFlexGrid.cs b/PROMS/Volian.Controls.Library/VlnFlexGrid.cs index 0e654e53..cc01cd61 100644 --- a/PROMS/Volian.Controls.Library/VlnFlexGrid.cs +++ b/PROMS/Volian.Controls.Library/VlnFlexGrid.cs @@ -3397,7 +3397,11 @@ namespace Volian.Controls.Library // if the paste is below - put back the range for the source location if ((crm.r2 > crm.r1) || (crm.c2 > crm.c1)) MergedRanges.Add(cr); - this[r + rowOffset, c] = MyCopyInfo.MyCopiedFlexGrid[r, c]; + // B2022-046 if the cell contains an RO or Transition then replace the usage id with to force a new usage id in the link + if (MyCopyInfo.MyCopiedFlexGrid[r, c] != null) + this[r + rowOffset, c] = ItemInfo.ReplaceLinkWithNewID(MyCopyInfo.MyCopiedFlexGrid[r, c].ToString().Replace("\r\n", "")); + else + this[r + rowOffset, c] = MyCopyInfo.MyCopiedFlexGrid[r, c]; MatchStyle(crm, cr); PasteBorders(r + rowOffset, c, r, c); PasteShading(r + rowOffset, c, r, c); // C2021-004 paste the shading information @@ -3506,7 +3510,11 @@ namespace Volian.Controls.Library if ((crm.r2 > crm.r1) || (crm.c2 > crm.c1)) MergedRanges.Add(cr); // copy cell text to the destination, copy the style, copy the cell borders - this[r, c + colOffset] = MyCopyInfo.MyCopiedFlexGrid[r, c]; + // B2022-046 if the cell contains an RO or Transition then replace the usage id with to force a new usage id in the link + if (MyCopyInfo.MyCopiedFlexGrid[r, c] != null) + this[r, c + colOffset] = ItemInfo.ReplaceLinkWithNewID(MyCopyInfo.MyCopiedFlexGrid[r, c].ToString().Replace("\r\n", "")); + else + this[r, c + colOffset] = MyCopyInfo.MyCopiedFlexGrid[r, c]; MatchStyle(crm, cr); PasteBorders(r, c + colOffset, r, c); PasteShading(r, c + colOffset, r, c); // C2021-004 paste the shading information @@ -3581,16 +3589,20 @@ namespace Volian.Controls.Library for (int c = MyCopyInfo.MyCopiedCellRange.c1; c <= Math.Min(MyCopyInfo.MyCopiedCellRange.c2, Cols.Count - 1 - colOffset); c++) { CellRange crm = MyCopyInfo.MyCopiedFlexGrid.GetMergedRange(r, c); - if (r == crm.r1 && c == crm.c1) - { - CellRange cr = GetCellRange(crm.r1 + rowOffset, crm.c1 + colOffset, crm.r2 + rowOffset, crm.c2 + colOffset); - if ((crm.r2 > crm.r1) || (crm.c2 > crm.c1)) - MergedRanges.Add(cr); - this[r + rowOffset, c + colOffset] = MyCopyInfo.MyCopiedFlexGrid[r, c]; - MatchStyle(crm, cr); - PasteBorders(r + rowOffset, c + colOffset, r, c); - PasteShading(r + rowOffset, c + colOffset, r, c); // C2021-004 paste the shading information - } + if (r == crm.r1 && c == crm.c1) + { + CellRange cr = GetCellRange(crm.r1 + rowOffset, crm.c1 + colOffset, crm.r2 + rowOffset, crm.c2 + colOffset); + if ((crm.r2 > crm.r1) || (crm.c2 > crm.c1)) + MergedRanges.Add(cr); + // B2022-046 if the cell contains an RO or Transition then replace the usage id with to force a new usage id in the link + if (MyCopyInfo.MyCopiedFlexGrid[r, c] != null) + this[r + rowOffset, c + colOffset] = ItemInfo.ReplaceLinkWithNewID(MyCopyInfo.MyCopiedFlexGrid[r, c].ToString().Replace("\r\n", "")); + else + this[r + rowOffset, c + colOffset] = MyCopyInfo.MyCopiedFlexGrid[r, c]; + MatchStyle(crm, cr); + PasteBorders(r + rowOffset, c + colOffset, r, c); + PasteShading(r + rowOffset, c + colOffset, r, c); // C2021-004 paste the shading information + } } } this.AdjustGridControlSize();