DocumentBase.SelectLinkedControls(CustomXMLNode) Method

Definition

Returns all the content controls in the document that are linked to the specified custom XML node.

public:
 Microsoft::Office::Interop::Word::ContentControls ^ SelectLinkedControls(Microsoft::Office::Core::CustomXMLNode ^ node);
public Microsoft.Office.Interop.Word.ContentControls SelectLinkedControls (Microsoft.Office.Core.CustomXMLNode node);
member this.SelectLinkedControls : Microsoft.Office.Core.CustomXMLNode -> Microsoft.Office.Interop.Word.ContentControls
Public Function SelectLinkedControls (node As CustomXMLNode) As ContentControls

Parameters

node
CustomXMLNode

The CustomXMLNode to which the content controls are linked.

Returns

A ContentControls collection that contains the content controls that are linked to the specified custom XML node.

Examples

The following code example adds three plain text content controls to the current document. The example also adds a CustomXMLPart that contains employee data and links two of the content controls to XML nodes in the CustomXMLPart. Next, the code gets the controls that are linked to the employee name node, displays a message box that shows the number of linked controls found, and finally iterates through the linked controls to display the title of each linked control. When you run this code, you should get one linked control and its title should be Employee Name. To use this example, run it from the ThisDocument class in a document-level project.

private void LinkedControls()
{
    this.Paragraphs.Last.Range.InsertParagraphAfter();
    Microsoft.Office.Tools.Word.PlainTextContentControl employeeName = 
        this.Controls.AddPlainTextContentControl(this.Paragraphs.Last.Range, 
        "employeeName");
    employeeName.Title = "Employee Name";
    this.Paragraphs.Last.Range.InsertParagraphAfter();
    Microsoft.Office.Tools.Word.PlainTextContentControl employeeHireDate = 
        this.Controls.AddPlainTextContentControl(this.Paragraphs.Last.Range, 
        "employeeHireDate");
    employeeHireDate.Title = "Employee Hire Date";
    this.Paragraphs.Last.Range.InsertParagraphAfter();
    Microsoft.Office.Tools.Word.PlainTextContentControl comments =
        this.Controls.AddPlainTextContentControl(this.Paragraphs.Last.Range, 
        "comments");
    comments.Title = "Comments";

    string xmlString = 
        "<?xml version=\"1.0\" encoding=\"utf-8\" ?>" 
        + "<employees>" 
        + "<employee>" 
        + "<name>Karina Leal</name>" 
        + "<hireDate>1999-04-01</hireDate>"             
        + "</employee>" 
        + "</employees>";
    Office.CustomXMLPart employeeXMLPart = 
        this.CustomXMLParts.Add(xmlString, missing);

    employeeName.XMLMapping.SetMapping(
        "/employees/employee/name", "", employeeXMLPart);
    employeeHireDate.XMLMapping.SetMapping(
        "/employees/employee/hireDate", "", employeeXMLPart);
    
    Office.CustomXMLNode node = employeeXMLPart.SelectSingleNode(
        "/employees[1]/employee[1]/name[1]");

    Word.ContentControls linkedControls = this.SelectLinkedControls(node);
    MessageBox.Show("Number of controls linked to the " + node.XPath 
                    + " node: " + linkedControls.Count.ToString());
    foreach (Word.ContentControl linkedControl in linkedControls)
    {
        MessageBox.Show("Linked control title: " + linkedControl.Title);
    }            
}
Private Sub LinkedControls()
    Me.Paragraphs.Last.Range.InsertParagraphAfter()
    Dim employeeName As Microsoft.Office.Tools.Word.PlainTextContentControl _
        = Me.Controls.AddPlainTextContentControl(Me.Paragraphs.Last.Range, _
        "employeeName")
    employeeName.Title = "Employee Name"
    Me.Paragraphs.Last.Range.InsertParagraphAfter()
    Dim employeeHireDate As  _
        Microsoft.Office.Tools.Word.PlainTextContentControl = _
        Me.Controls.AddPlainTextContentControl(Me.Paragraphs.Last.Range, _
        "employeeHireDate")
    employeeHireDate.Title = "Employee Hire Date"
    Me.Paragraphs.Last.Range.InsertParagraphAfter()
    Dim comments As Microsoft.Office.Tools.Word.PlainTextContentControl _
        = Me.Controls.AddPlainTextContentControl(Me.Paragraphs.Last.Range, _
        "comments")
    comments.Title = "Comments"

    Dim xmlString As String = _
        "<?xml version=""1.0"" encoding=""utf-8"" ?>" _
        + "<employees>" _
        + "<employee>" _
        + "<name>Karina Leal</name>" _
        + "<hireDate>1999-04-01</hireDate>" _
        + "</employee>" _
        + "</employees>"
    Dim employeeXMLPart As Office.CustomXMLPart = _
        Me.CustomXMLParts.Add(xmlString)

    employeeName.XMLMapping.SetMapping("/employees/employee/name")
    employeeHireDate.XMLMapping.SetMapping("/employees/employee/hireDate")

    Dim node As Office.CustomXMLNode = employeeXMLPart.SelectSingleNode( _
        "/employees[1]/employee[1]/name[1]")

    Dim linkedControls As Word.ContentControls = Me.SelectLinkedControls(node)

    MessageBox.Show("Number of controls linked to the " + node.XPath _
        + " node: " + linkedControls.Count.ToString())
    For Each linkedControl As Word.ContentControl In linkedControls
        MessageBox.Show("Linked control title: " + linkedControl.Title)
    Next
End Sub

Applies to