Поделиться через


View.GetContextNodes Метод (XPathNavigator, String)

Возвращает ссылку на объект XPathNodeIterator для выполнения итерации в возвращенных узлах XML в текущем выборе в элементе управления, привязанном к указанному элементу управления.

Пространство имен: 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
    Идентификатор ViewContext элемента управления, содержащего выбранные возвращаемые узлы XML.

Возвращаемое значение

Объект XPathNodeIterator, заполненный узлами в текущем выборе.

Исключения

Тип исключения Условие

InvalidOperationException

Метод GetContextNodes вызван из обработчика события для события Loading.

ArgumentNullException

Этому методу переданы параметры .

ArgumentException

Этому методу переданы недопустимые параметры . Например, неправильный тип или формат.

Заметки

Можно определить идентификатор ViewContext для элемента управления или группы, открыв шаблон формы в режиме конструктора, отобразив диалоговое окно элемента управления и затем выбрав вкладку .

Когда указан идентификатор ViewContext, все узлы XML, указанные для выбора, должны находится в этом контексте.

Узлы XML, возвращенные методом GetContextNodes, составляют последовательность узлов, сопоставленных из представления, соответствующего текущему узлу преобразования 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