次の方法で共有


View.GetContextNodes メソッド (XPathNavigator, String)

指定したコントロールにバインドされているコントロール内にある、現在の選択範囲内の返された XML ノードに対して反復処理を行うための XPathNodeIterator への参照を取得します。

名前空間: Microsoft.Office.InfoPath
アセンブリ: Microsoft.Office.InfoPath (microsoft.office.infopath.dll 内)

構文

'宣言
Public MustOverride Function GetContextNodes ( _
    xmlNode As XPathNavigator, _
    controlId As String _
) As XPathNodeIterator
'使用
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
)

パラメータ

  • xmlNode
    取得するノードを指定する XPathNavigator オブジェクト。
  • controlId
    返すように現在選択されている XML ノードが含まれているコントロールの ViewContext 識別子。

戻り値

現在の選択範囲内にあるノードが格納されている XPathNodeIterator

例外処理

例外の種類 条件

InvalidOperationException

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

ArgumentNullException

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

ArgumentException

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

コメント

フォーム テンプレートをデザイン モードで開き、コントロールの [プロパティ] ダイアログ ボックスを表示してから [詳細設定] タブをクリックすることにより、コントロールまたはグループの ViewContext 識別子を確認できます。

ViewContext 識別子を指定する場合は、選択するように指定されているすべての XML ノードがそのコンテキスト内になくてはなりません。

GetContextNodes メソッドによって返される XML ノードは、ビューからマップされた一連のノードで構成され、現在の XSL 変換 (XSLT) ノードに対応しています。現在の選択範囲から始まって、ビューの上位に向かって BODY タグに至るまでのノードが含まれます。

メモメモ :

GetContextNodes メソッドを、ビュー内のボタンの Clicked イベントのイベント ハンドラ内で使用すると、現在の選択範囲に基づくノードは返されません。これは、本来はコンテキスト内にあるコントロールからフォーカスが失われるためです。このような動作を回避するには、カスタム作業ウィンドウ、メニュー、またはツール バーの GetContextNodes メソッドを使用します。

このメンバは、現在開いているフォームと同じドメイン内で実行されているフォーム、またはドメインを越えたアクセス許可を付与されているフォームだけがアクセスできます。

この型またはメンバは、Microsoft Office InfoPath 2007 で開いているフォームで実行されているコードからのみアクセスできます。

次の例は、SelectNodes(XPathNavigator,XPathNavigator,String) メソッドを使用して 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,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

関連項目

参照

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