View.GetContextNodes 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
重载
GetContextNodes(XPathNavigator) |
获取对 XPathNodeIterator 对象的引用,以便从指定节点开始循环访问返回的 XML 节点。 |
GetContextNodes(XPathNavigator, String) |
获取对 的引用, XPathNodeIterator 以循环访问绑定到指定控件的控件中的当前选定内容中返回的 XML 节点。 |
GetContextNodes() |
获取对 的引用, XPathNodeIterator 以循环访问当前选定内容中返回的 XML 节点。 |
GetContextNodes(XPathNavigator)
获取对 XPathNodeIterator 对象的引用,以便从指定节点开始循环访问返回的 XML 节点。
public:
abstract System::Xml::XPath::XPathNodeIterator ^ GetContextNodes(System::Xml::XPath::XPathNavigator ^ xmlNode);
public abstract System.Xml.XPath.XPathNodeIterator GetContextNodes (System.Xml.XPath.XPathNavigator xmlNode);
abstract member GetContextNodes : System.Xml.XPath.XPathNavigator -> System.Xml.XPath.XPathNodeIterator
Public MustOverride Function GetContextNodes (xmlNode As XPathNavigator) As XPathNodeIterator
参数
- xmlNode
- XPathNavigator
用于指定 XML 节点的对象。
返回
一个 XPathNodeIterator ,它填充了从指定节点开始的节点。
例外
从事件的事件处理程序Loading调用了 GetContextNodes 方法。
传递给此方法的参数是一个 null 引用, (Visual Basic) 中无任何内容。
传递给此方法的参数无效。 例如,它的类型或格式有误。
示例
在以下示例中, SelectNodes(XPathNavigator) 方法用于选择绑定到 group2 的 Repeating Table 控件的第一行中的节点。 然后使用 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
注解
由 GetContextNodes 方法返回的 XML 节点包含一系列从视图映射而来的节点,这些节点与当前的 XSL 传输 (XSLT) 节点相对应,从指定节点开始,沿视图祖先向上直到 BODY 标记。
如果指定的节点绑定到视图中的多个控件,则必须改用 GetContextNodes(XPathNavigator, String) 方法,该方法允许指定绑定到要循环访问的节点的控件的 ViewContext 标识符。
注意: 如果 GetContextNodes 方法在视图中按钮事件的事件处理程序 Clicked 中使用,则不会基于当前选择返回节点,因为焦点从本应位于上下文中的控件中丢失。 若要避免此行为,请通过自定义任务窗格、菜单或工具栏使用 GetContextNodes。
此成员只能由与当前打开的表单在相同域中运行的表单访问,或者由已授予跨域权限的表单访问。
可以通过 Microsoft InfoPath Filler 中打开的表单中运行的代码访问此类型或成员。
适用于
GetContextNodes(XPathNavigator, String)
获取对 的引用, XPathNodeIterator 以循环访问绑定到指定控件的控件中的当前选定内容中返回的 XML 节点。
public:
abstract System::Xml::XPath::XPathNodeIterator ^ GetContextNodes(System::Xml::XPath::XPathNavigator ^ xmlNode, System::String ^ controlId);
public abstract System.Xml.XPath.XPathNodeIterator GetContextNodes (System.Xml.XPath.XPathNavigator xmlNode, string controlId);
abstract member GetContextNodes : System.Xml.XPath.XPathNavigator * string -> System.Xml.XPath.XPathNodeIterator
Public MustOverride Function GetContextNodes (xmlNode As XPathNavigator, controlId As String) As XPathNodeIterator
参数
- xmlNode
- XPathNavigator
用于指定要获取的节点的对象。
- controlId
- String
控件的 ViewContext 标识符,该控件包含要返回的当前选定 XML 节点。
返回
一个 XPathNodeIterator ,它填充了当前选定内容的节点。
例外
从事件的事件处理程序Loading调用了 GetContextNodes 方法。
传递给此方法的参数是 null 引用, (Visual Basic) 中没有。
传递给此方法的参数无效。 例如,它们的类型或格式有误。
示例
在以下示例中, SelectNodes(XPathNavigator, XPathNavigator, String) 方法用于选择绑定到 group2 的 Repeating Table 控件的第一行中的节点。 然后使用 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
注解
可以通过在设计模式下打开窗体模板,显示控件的“属性”对话框,然后单击“高级”选项卡,来确定控件或组的 ViewContext 标识符。
在指定 ViewContext 标识符时,所有已指定要选择的 XML 节点都必须在该上下文内。
由 GetContextNodes 方法返回的 XML 节点包含一系列从视图映射而来的节点,这些节点与当前的 XSL 传输 (XSLT) 节点相对应,从当前选择开始,沿视图祖先向上直到 BODY 标记。
注意: 如果 GetContextNodes 方法在视图中按钮事件的事件处理程序 Clicked 中使用,则不会基于当前选择返回节点,因为焦点从本应位于上下文中的控件中丢失。 若要避免此行为,请通过自定义任务窗格、菜单或工具栏使用 GetContextNodes。
此成员只能由与当前打开的表单在相同域中运行的表单访问,或者由已授予跨域权限的表单访问。
可以通过 Microsoft InfoPath Filler 中打开的表单中运行的代码访问此类型或成员。
适用于
GetContextNodes()
获取对 的引用, XPathNodeIterator 以循环访问当前选定内容中返回的 XML 节点。
public:
abstract System::Xml::XPath::XPathNodeIterator ^ GetContextNodes();
public abstract System.Xml.XPath.XPathNodeIterator GetContextNodes ();
abstract member GetContextNodes : unit -> System.Xml.XPath.XPathNodeIterator
Public MustOverride Function GetContextNodes () As XPathNodeIterator
返回
一个 XPathNodeIterator ,它填充了当前选定内容的节点。
例外
从事件的事件处理程序Loading调用了 GetContextNodes 方法。
示例
在以下示例中,GetContextNodes 方法用于基于当前选择返回上下文节点集合,以填充 XPathNodeIterator 对象变量。然后,该代码循环该上下文节点集合并显示名称、内部 XML 以及每个节点的值。
// Get context nodes in current selection.
XPathNodeIterator contextNodes =
CurrentView.GetContextNodes();
// Loop through collection and display information.
foreach (XPathNavigator contextNode in contextNodes)
{
MessageBox.Show(contextNode.Name);
MessageBox.Show(contextNode.InnerXml);
MessageBox.Show(contextNode.Value);
}
' Get context nodes in current 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
注解
GetContextNodes 方法返回的 XML 节点由从视图映射的节点序列组成,对应于所选择的 XSL 转换 (XSLT) 节点。
如果所选节点绑定到视图中的多个控件,则必须改用 GetContextNodes(XPathNavigator, String) 方法,该方法允许指定绑定到要循环访问的节点的控件的 ViewContext 标识符。
注意: 如果 GetContextNodes 方法在视图中按钮事件的事件处理程序 Clicked 中使用,则不会基于当前选择返回节点,因为焦点从本应位于上下文中的控件中丢失。 若要避免此行为,请通过自定义任务窗格、菜单或工具栏使用 GetContextNodes。
此成员只能由与当前打开的表单在相同域中运行的表单访问,或者由已授予跨域权限的表单访问。
可以通过 Microsoft InfoPath Filler 中打开的表单中运行的代码访问此类型或成员。