次の方法で共有


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

例外処理

例外の種類 条件

InvalidOperationException

GetContextNodes メソッドが、Loading イベントのイベント ハンドラから呼び出されました。

ArgumentNullException

このメソッドに渡されたパラメータは null です。

ArgumentException

このメソッドに渡されたパラメータは有効ではありません。たとえば、型または形式が正しくありません。

コメント

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

関連項目

参照

View クラス
View のメンバ
Microsoft.Office.InfoPath 名前空間