/// <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); }
/// <summary> /// Gets the parent container. /// </summary> /// <param name="parentContainer">The parent container.</param> /// <param name="placeHolder">The place holder.</param> /// <returns></returns> protected bool GetParentContainer(ref SdtElement parentContainer, string placeHolder) { bool isRefresh = false; MainDocumentPart mainDocumentPart = parentContainer.Ancestors<Document>().First().MainDocumentPart; KeyValuePair<string, string> nameToValue = this.customXmlPartHelper.GetNameToValueCollectionFromElementForType(mainDocumentPart, DocumentContainerPlaceHoldersNode, NodeType.Element).Where(f => f.Key.Equals(placeHolder)).FirstOrDefault(); 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>(); nameToValueCollection.Add(placeHolder, parentContainer.OuterXml); this.customXmlPartHelper.SetElementFromNameToValueCollectionForType(mainDocumentPart, DocumentRootNode, DocumentContainerPlaceHoldersNode, nameToValueCollection, NodeType.Element); } return isRefresh; }