From b6d89593b95bef56913150096e5503910a0cc55e Mon Sep 17 00:00:00 2001 From: Rich Date: Tue, 17 Jun 2014 21:25:33 +0000 Subject: [PATCH] Added code to resolve reference object links in grids --- PROMS/DataLoader/dlgExportImport.cs | 33 ++++++++++++++++++- .../VEPROMS User Interface/dlgExportImport.cs | 31 +++++++++++++++++ 2 files changed, 63 insertions(+), 1 deletion(-) diff --git a/PROMS/DataLoader/dlgExportImport.cs b/PROMS/DataLoader/dlgExportImport.cs index 6a87a638..e5887d7c 100644 --- a/PROMS/DataLoader/dlgExportImport.cs +++ b/PROMS/DataLoader/dlgExportImport.cs @@ -46,6 +46,11 @@ namespace DataLoader PEIPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\VEPROMS\PEI_" + Database.VEPROMS_SqlConnection.Database; if (!Directory.Exists(PEIPath)) Directory.CreateDirectory(PEIPath); + if (MyFolder.ChildFolderCount == 0) + { + Directory.Delete(PEIPath, true); + Directory.CreateDirectory(PEIPath); + } pnlExport.Dock = DockStyle.Fill; pnlImport.Dock = DockStyle.Fill; if (_MyMode.ToLower() == "export") @@ -2506,7 +2511,33 @@ namespace DataLoader { XmlNode nd = xc.SelectSingleNode("grid"); string data = nd.Attributes.GetNamedItem("data").InnerText; - string config = nd.Attributes.GetNamedItem("config").InnerText; + XmlDocument xd = new XmlDocument(); + xd.LoadXml(data); + XmlNode gn = xd.SelectSingleNode("C1FlexGrid/Control/IsRoTable"); + if (gn.InnerText.ToLower() == "true") + { + gn = xd.SelectSingleNode("C1FlexGrid/Control/RODbId"); + gn.InnerText = newRODbID.ToString(); + data = xd.OuterXml; + } + else + { + XmlNodeList nl = xd.SelectNodes("C1FlexGrid/Cells/Cell/Data"); + bool modified = false; + string lookFor = string.Format(" {0}[END", oldRODbID.ToString()); + string replaceWith = string.Format(" {0}[END", newRODbID.ToString()); + foreach (XmlNode nn in nl) + { + if (nn.InnerText.Contains("#Link:ReferencedObject:")) + { + nn.InnerText = nn.InnerText.Replace(lookFor, replaceWith); + modified = true; + } + } + if (modified) + data = xd.OuterXml; + } + string config = nd.Attributes.GetNamedItem("config").InnerText; string userid = nd.Attributes.GetNamedItem("userid").InnerText; DateTime dts = DateTime.Parse(nd.Attributes.GetNamedItem("dts").InnerText); Grid gg = Grid.MakeGrid(content, data, config, dts, userid); diff --git a/PROMS/VEPROMS User Interface/dlgExportImport.cs b/PROMS/VEPROMS User Interface/dlgExportImport.cs index d357dcb2..af80aacd 100644 --- a/PROMS/VEPROMS User Interface/dlgExportImport.cs +++ b/PROMS/VEPROMS User Interface/dlgExportImport.cs @@ -51,6 +51,11 @@ namespace VEPROMS PEIPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\VEPROMS\PEI_" + Database.VEPROMS_SqlConnection.Database; if (!Directory.Exists(PEIPath)) Directory.CreateDirectory(PEIPath); + if (MyFolder.ChildFolderCount == 0) + { + Directory.Delete(PEIPath,true); + Directory.CreateDirectory(PEIPath); + } pnlExport.Dock = DockStyle.Fill; pnlImport.Dock = DockStyle.Fill; if (_MyMode.ToLower() == "export") @@ -2512,6 +2517,32 @@ namespace VEPROMS { XmlNode nd = xc.SelectSingleNode("grid"); string data = nd.Attributes.GetNamedItem("data").InnerText; + XmlDocument xd = new XmlDocument(); + xd.LoadXml(data); + XmlNode gn = xd.SelectSingleNode("C1FlexGrid/Control/IsRoTable"); + if (gn.InnerText.ToLower() == "true") + { + gn = xd.SelectSingleNode("C1FlexGrid/Control/RODbId"); + gn.InnerText = newRODbID.ToString(); + data = xd.OuterXml; + } + else + { + XmlNodeList nl = xd.SelectNodes("C1FlexGrid/Cells/Cell/Data"); + bool modified = false; + string lookFor = string.Format(" {0}[END", oldRODbID.ToString()); + string replaceWith = string.Format(" {0}[END", newRODbID.ToString()); + foreach (XmlNode nn in nl) + { + if (nn.InnerText.Contains("#Link:ReferencedObject:")) + { + nn.InnerText = nn.InnerText.Replace(lookFor, replaceWith); + modified = true; + } + } + if(modified) + data = xd.OuterXml; + } string config = nd.Attributes.GetNamedItem("config").InnerText; string userid = nd.Attributes.GetNamedItem("userid").InnerText; DateTime dts = DateTime.Parse(nd.Attributes.GetNamedItem("dts").InnerText);