使用辅助源列重复表

时间:2014-12-23 20:02:35

标签: xpath sharepoint-2010 infopath infopath2010 infopath-2007

我整天都在苦苦挣扎。我有一个Infopath表单连接到两个Sharepoint列表。

SP列表1(项目章程):

  • 宪章标题
  • 宪章机会
  • 宪章开始日期

SP列表2(项目周刊):

  • 每周标题
  • 每周机会。

我正在尝试将这两个列表合并到一个新表单上的1个重复表中。 每周标题字段与宪章标题字段具有相同的值,因此我可以使用标题进行匹配。我找到了一些资源,这是最好的:

http://www.infopathdev.com/forums/t/21262.aspx?PageIndex=2

最后有一个样本可以完全符合我的要求,但它不能用于我的设置。这是我得到的:

Infopath Problem

正如你在图片中看到的那样,"来自我的每周"列始终相同,这就是问题所在。它应该与左侧红色突出显示的相应字段匹配。这是计算字段中的公式:

Weekly_x0020_Opportunity[Weekly_x0020_Title = current()/Charter_x0020_Title]

逻辑是返回每周机会描述,其中每周标题与宪章标题匹配;但是,它只返回相同的描述。测试列用于证明 current()/ Charter_x0020_Title 正在为该行生成唯一标题。

我觉得我很亲密。第三个章程缺少描述,因为我的周刊没有第三个章程,所以这个工作正常。我只需要弄清楚如何引入正确的描述。

注意:我希望在没有编码的情况下提供开箱即用的解决方案。

完全xPATH

xdXDocument:GetDOM(" Project Weekly")/ dfs:myFields / dfs:dataFields / d:SharePointListItem_RW / d:Weekly_x0020_Opportunity [xdXDocument:GetDOM(" Project Weekly")/ dfs :myFields / dfs:dataFields / d:SharePointListItem_RW / d:Weekly_x0020_Title = current()/ d:Charter_x0020_Title]

1 个答案:

答案 0 :(得分:1)

问题是谓词中的路径([]之间)是使用绝对路径而不是相对路径。您需要使用相对路径。

这条路径(你现在拥有的):

xdXDocument:GetDOM("Project Weekly")
  /dfs:myFields/dfs:dataFields/d:SharePointListItem_RW/d:Weekly_x0020_Opportunity
  [xdXDocument:GetDOM("Project Weekly")/dfs:myFields/dfs:dataFields
     /d:SharePointListItem_RW/d:Weekly_x0020_Title = current()/d:Charter_x0020_Title]

表示“获取第一个 1 每周机会字段,其中任何 每周标题字段位于项目周刊数据中source具有当前 Charter Title 的值。“

或者换句话说,只要方括号之间的内容为真,就可以在Project Weekly数据源中获取第一个每周机会字段。

此路径:

xdXDocument:GetDOM("Project Weekly")
  /dfs:myFields/dfs:dataFields/d:SharePointListItem_RW
  [d:Weekly_x0020_Title = current()/d:Charter_x0020_Title]/d:Weekly_x0020_Opportunity

表示“查找第一个 1 SharePointListItem_RW ,其每周标题等于当前宪章标题,然后获得每周机会字段。“

这就是你应该使用的东西。

<小时/> 1 我在这里过分简单说“第一”。该路径选择该路径适用的所有节点,然后在InfoPath对其进行评估时,它将获取第一个结果。