2

我正在尝试构建一个 Infopath 表单,该表单使用从 Sharepoint 列表返回的数据填充字段。我设置了一个下拉列表框,其值从 Sharepoint 数据源中填充。那部分工作正常。现在,一旦用户从列表中选择其中一项,我希望其他字符串字段能够自动填充。
所以我制定了一个规则来做到这一点。我写了一个 XPath 公式来从 Sharepoint 列表中获取属性

xdXDocument:GetDOM("Base Printers")
/dfs:myFields/dfs:dataFields/dfs:Base_Printers/@PNP_String

问题是这总是从列表中的第一项中获取属性(PNP_String)。我想根据用户的选择使用正确的打印机(Base_Printers)填充它。所以我必须索引到 Base_Printers,然后选择 PNP_String。所以我尝试了这个

.../dfs:Base_Printers[2]/@PNP_String

它将索引到第二项并返回该 PNP 字符串,这很棒!
但是我需要索引到用户选择的元素,所以我尝试了这个:

.../dfs:Base_Printers[@Printer=my:basePrinter]/@PNP_String

其中@Printer 是共享点列表中的属性,my:basePrinter 是下拉列表的本地信息路径变量。这对我没有任何帮助。当我尝试文字值时:

.../dfs:Base_Printers[@Printer='XYZ']/@PNP_String

它选择了正确的 pnp 字符串。
所以我的问题是,如何根据用户的选择索引到该打印机阵列?

谢谢

4

2 回答 2

1

我想我想通了。

xdXDocument:GetDOM("Base Printers")/dfs:myFields/dfs:dataFields
/dfs:Base_Printers[@Printer = current()]/@PNP_String

出于某种奇怪的原因,它在您使用时起作用:

@Printer = current()

但不是当你使用:

@Printer = my:basePrinter

即使 current() 和 my:basePrinter 返回相同的字符串。

奇怪...

于 2009-02-19T15:58:59.187 回答
0

默认情况下,XPath 不会从周围环境继承上下文(例如本地信息路径变量)。

在 XSLT 中,由处理器提供一种机制来允许您填充全局(即在根节点中定义)xsl:variable 声明,然后这些声明在 XPath 中作为 $name 可用。

由于我不知道 InfoPath,我不能更具体,但它应该被记录(即使只是通过示例间接地)......

另请注意,您可以在谓词中(在 [] 内)使用带有自己谓词的完整位置路径,因此如果所选值在同一个文档中可用,您可以使用它,例如

.../dfs:base_printers[@printer=/theform/theCombo/Values[@selected=true]]
于 2009-02-19T14:57:39.170 回答