View.GetContextNodes-Methode (XPathNavigator, String)
Ruft einen Verweis auf ein XPathNodeIterator-Objekt zum Durchlaufen der zurückgegebenen XML-Knoten in der aktuellen Auswahl innerhalb des an das angegebene Steuerelement gebundenen Steuerelements ab.
Namespace: Microsoft.Office.InfoPath
Assembly: Microsoft.Office.InfoPath (in Microsoft.Office.InfoPath.dll)
Syntax
'Declaration
Public MustOverride Function GetContextNodes ( _
xmlNode As XPathNavigator, _
controlId As String _
) As XPathNodeIterator
'Usage
Dim instance As View
Dim xmlNode As XPathNavigator
Dim controlId As String
Dim returnValue As XPathNodeIterator
returnValue = instance.GetContextNodes(xmlNode, _
controlId)
public abstract XPathNodeIterator GetContextNodes(
XPathNavigator xmlNode,
string controlId
)
Parameter
- xmlNode
Typ: System.Xml.XPath.XPathNavigator
Ein Objekt, das den abzurufenden Knoten angibt.
- controlId
Typ: System.String
Der ViewContext-Bezeichner des Steuerelements, das die aktuell ausgewählten XML-Knoten enthält, die zurückgegeben werden sollen.
Rückgabewert
Typ: System.Xml.XPath.XPathNodeIterator
Ein XPathNodeIterator-Objekt, das mit den Knoten in der aktuellen Auswahl aufgefüllt wird.
Ausnahmen
Ausnahme | Bedingung |
---|---|
InvalidOperationException | Die GetContextNodes-Methode wurde aus einem Ereignishandler für das Loading-Ereignis aufgerufen. |
ArgumentNullException | Die an diese Methode übergebenen Parameter sind ein Nullverweis (Nothing in Visual Basic). |
ArgumentException | Die an diese Methode übergebenen Parameter sind nicht gültig. Die Parameter weisen beispielsweise den falschen Typ oder das falsche Format auf. |
Hinweise
Sie können den ViewContext-Bezeichner für ein Steuerelement oder eine Gruppe bestimmen, indem Sie die Formularvorlage im Entwurfsmodus öffnen, das Dialogfeld Eigenschaften des Steuerelements anzeigen und dann auf die Registerkarte Erweitert klicken.
Wenn der ViewContext-Bezeichner angegeben ist, müssen sich alle XML-Knoten, die zum Auswählen angegeben wurden, in diesem Kontext befinden.
Die von der GetContextNodes-Methode zurückgegebenen XML-Knoten bestehen aus einer Sequenz von Knoten, die von der Ansicht entsprechend dem aktuellen XSLT-Knoten (XSL-Transformation) zugeordnet werden. Diese Zuordnung beginnt bei der aktuellen Auswahl und wird über die Ansichtenvorgänger bis hin zum BODY-Tag fortgesetzt.
Hinweis
Die GetContextNodes-Methode gibt basierend auf der aktuellen Auswahl keine Knoten zurück, wenn sie im Ereignishandler für das Clicked-Ereignis einer Schaltfläche in der Ansicht verwendet wird, da der Fokus dem Steuerelement entzogen wird, das sich eigentlich im Kontext befinden sollte. Um dieses Verhalten zu vermeiden, verwenden Sie GetContextNodes in einem benutzerdefinierten Aufgabenbereich, einem benutzerdefinierten Menü oder einer benutzerdefinierten Symbolleiste.
Auf den Member kann nur über Formulare zugegriffen werden, die in derselben Domäne wie das zurzeit geöffnete Formular ausgeführt werden, oder über Formulare, denen domänenübergreifende Berechtigungen erteilt wurden.
Auf diesen Typ oder diesen Member kann nur über Code zugegriffen werden, der in Formularen ausgeführt wird, die mit Microsoft InfoPath Filler geöffnet wurden.
Beispiele
Im folgenden Beispiel wird die SelectNodes(XPathNavigator, XPathNavigator, String)-Methode zum Auswählen der Knoten in der ersten Zeile eines an group2 gebundenen Steuerelements vom Typ Wiederholte Tabelle verwendet. Dann wird die GetContextNodes-Methode verwendet, um basierend auf der aktuellen Auswahl und dem angegebenen Knoten eine Auflistung von Kontextknoten zurückzugeben. Schließlich führt der Code eine Schleife durch die Auflistung der Kontextknoten aus und zeigt den Namen, die innere XML und den Wert jedes Knotens an.
// Create XPathNavigator and specify XPath for nodes.
XPathNavigator repeatingTableRow1 =
MainDataSource.CreateNavigator().SelectSingleNode(
"/my:myFields/my:group1/my:group2[1]", NamespaceManager);
// Select nodes in specified XPathNavigator.
CurrentView.SelectNodes(repeatingTableRow1,repeatingTableRow1,"CTRL5");
// Get context nodes in selection.
XPathNodeIterator contextNodes =
CurrentView.GetContextNodes(repeatingTableRow1,"CTRL5");
// Loop through collection and display information.
foreach (XPathNavigator contextNode in contextNodes)
{
MessageBox.Show(contextNode.Name);
MessageBox.Show(contextNode.InnerXml);
MessageBox.Show(contextNode.Value);
}
' Create XPathNavigator and specify XPath for nodes.
Dim repeatingTableRow1 As XPathNavigator = _
CreateNavigator().SelectSingleNode( _
"/my:myFields/my:group1/my:group2[1]", NamespaceManager)
' Select nodes in specified XPathNavigator.
CurrentView.SelectNodes(repeatingTableRow1,repeatingTableRow1,"CTRL5")
' Get context nodes in selection.
Dim contextNodes As XPathNodeIterator = _
CurrentView.GetContextNodes(repeatingTableRow1)
' Loop through collection and display information.
Dim contextNode As XPathNavigator
For Each contextNode In contextNodes
MessageBox.Show(contextNode.Name)
MessageBox.Show(contextNode.InnerXml)
MessageBox.Show(contextNode.Value)
Next