View.GetContextNodes メソッド (XPathNavigator)
指定したノードから開始する、返された XML ノードに対して反復処理を行うための XPathNodeIterator オブジェクトへの参照を取得します。
名前空間: Microsoft.Office.InfoPath
アセンブリ: Microsoft.Office.InfoPath (microsoft.office.infopath.dll 内)
構文
'宣言
Public MustOverride Function GetContextNodes ( _
xmlNode As XPathNavigator _
) As XPathNodeIterator
'使用
Dim instance As View
Dim xmlNode As XPathNavigator
Dim returnValue As XPathNodeIterator
returnValue = instance.GetContextNodes(xmlNode)
public abstract XPathNodeIterator GetContextNodes (
XPathNavigator xmlNode
)
パラメータ
- xmlNode
XML ノードを指定する XPathNavigator オブジェクト。
戻り値
指定したノードから開始する一連のノードが格納された XPathNodeIterator。
例外処理
例外の種類 | 条件 |
---|---|
GetContextNodes メソッドが、Loading イベントのイベント ハンドラから呼び出されました。 |
|
このメソッドに渡されたパラメータは null です。 |
|
このメソッドに渡されたパラメータは有効ではありません。たとえば、型または形式が正しくありません。 |
コメント
GetContextNodes メソッドによって返される XML ノードは、ビューからマップされた一連のノードで構成され、現在の XSL 変換 (XSLT) ノードに対応しています。指定されたノードから始まって、ビューの上位に向かって BODY タグに至るまでのノードが含まれます。
指定したノードがビュー内の複数のコントロールにバインドされている場合は、このメソッドではなく、反復処理の対象とするノードにバインドされているコントロールの ViewContext 識別子を指定できる GetContextNodes メソッドを使用する必要があります。
![]() |
---|
GetContextNodes メソッドを、ビュー内のボタンの Clicked イベントのイベント ハンドラ内で使用すると、現在の選択範囲に基づくノードは返されません。これは、本来はコンテキスト内にあるコントロールからフォーカスが失われるためです。このような動作を回避するには、カスタム作業ウィンドウ、メニュー、またはツール バーの GetContextNodes メソッドを使用します。 |
このメンバは、現在開いているフォームと同じドメイン内で実行されているフォーム、またはドメインを越えたアクセス許可を付与されているフォームだけがアクセスできます。
この型またはメンバは、Microsoft Office InfoPath 2007 で開いているフォームで実行されているコードからのみアクセスできます。
例
次の例は、SelectNodes メソッドを使用して group2 にバインドされている [繰り返しテーブル] コントロールの最初の行内のノードを選択します。次に、GetContextNodes メソッドを使用して、現在の選択内容と指定したノードに基づいたコンテキスト ノードのコレクションを返します。最後に、コンテキスト ノードのコレクションにループ処理を実行して、各ノードの名前、内部 XML、および値を表示します。
// 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);
// Get context nodes in selection.
XPathNodeIterator contextNodes =
CurrentView.GetContextNodes(repeatingTableRow1);
// 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)
' 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