protected bool GetParentContainer(ref SdtElement parentContainer, string placeholder) { MainDocumentPart mainDocumentPart = parentContainer.Ancestors <Document>().First().MainDocumentPart; KeyValuePair <string, string> nameToValue = this.customXmlPartHelper.GetNameToValueCollectionFromElementForType(mainDocumentPart, DocumentContainerPlaceholdersNode, NodeType.Element).FirstOrDefault(f => f.Key.Equals(placeholder)); bool isRefresh = !string.IsNullOrEmpty(nameToValue.Value); if (isRefresh) { SdtElement parentElementFromCustomXmlPart = new SdtBlock(nameToValue.Value); parentContainer.Parent.ReplaceChild(parentElementFromCustomXmlPart, parentContainer); parentContainer = parentElementFromCustomXmlPart; } else { Dictionary <string, string> nameToValueCollection = new Dictionary <string, string> { { placeholder, parentContainer.OuterXml } }; this.customXmlPartHelper.SetElementFromNameToValueCollectionForType(mainDocumentPart, DocumentRootNode, DocumentContainerPlaceholdersNode, nameToValueCollection, NodeType.Element); } return(isRefresh); }
/// <summary> /// Sets the data binding. /// </summary> /// <param name="xpath">The x path.</param> /// <param name="element">The element.</param> protected void SetDataBinding(string xpath, SdtElement element) { element.SdtProperties.RemoveAllChildren <DataBinding>(); DataBinding dataBinding = new DataBinding() { XPath = xpath, StoreItemId = new StringValue(this.customXmlPartHelper.CustomXmlPartCore.GetStoreItemId(element.Ancestors <Document>().First().MainDocumentPart)) }; element.SdtProperties.Append(dataBinding); }