我只是使用Sharepoint几天,我知道这个问题已经多次问过,但我已经尝试了所有这些问题,而且没有一个能够工作。
这些是我的设计
作为文档库类型的文档具有Id
Id | DocumentName
---+-------------
1 | Document A
2 | Document B
活动列表,有一个引用文档标识的外键“DocId”
Id | DocId | Name
---+-------+-----------
1 | 1 | Activity A
2 | 1 | Activity B
3 | 1 | Activity C
4 | 2 | Activity D
问题是我需要在文档上获取包含文档名称的所有活动。
在SQL中,我可以使用Join查询从另一个表中获取其他信息。但是我在CAML查询中尝试了一些Join语句,但没有一个能够工作。 这是我需要得到的结果。
Id | DocId | Name | DocumentName
---+-------+--------------------------
1 | 1 | Activity A | Document A
2 | 1 | Activity B | Document A
3 | 1 | Activity C | Document A
4 | 2 | Activity D | Document B
有人可以建议我查询吗?
这是我的问题:
<View>
<ViewFields>
<FieldRef Name = 'DocLeafRef'/>
<FieldRef Name = 'ID'/>
<FieldRef Name = 'e8_document'/>
<FieldRef Name = 'Title'/>
<FieldRef Name = 'Author'/>
<FieldRef Name = 'Created'/>
</ViewFields>
<Joins>
<Join Type = 'INNER' ListAlias = 'Documents'>
<Eq>
<FieldRef Name ='e8_document' RefType = 'Id'/>
<FieldRef Name ='ID' List ='Documents'/>
</Eq>
</Join>
</Joins>
<ProjectedFields>
<Field ShowField ='FileLeafRef' Type ='Lookup' Name ='DocLeafRef' List ='Documents'/>
</ProjectedFields>
<Query>
<Where>
<Eq>
<FieldRef Name='e8_caseId'></FieldRef>
<Value Type = 'Number'>23</Value>
</Eq>
</Where>
</Query>
</View>
我在“活动”列表中查询,e8_document是引用文档中Id的查找字段。据我所知,我们需要投影,我已经添加了投影,但查询引发了错误。
答案 0 :(得分:0)
似乎Query
元素在您的情况下无效,基本上Query
元素不能包含Joins
作为子元素。
服务器端对象模型
需要通过SPQuery Class
指定Joins
element SPQuery.Joins
Property:
var qry = new SPQuery();
qry.Joins = @"<Join Type="LEFT" ListAlias="Documents">
<Eq>
<FieldRef Name="DocId" RefType="ID" />
<FieldRef Name="ID" List="Documents" />
</Eq>
</Join>";
客户端对象模型
以下是 CSOM API 的完整CAML查询:
<View>
<ViewFields>
<FieldRef Name="ID" />
<FieldRef Name="DocId" />
<FieldRef Name="Name" />
<FieldRef Name="Documents" />
</ViewFields>
<Joins>
<Join Type="LEFT" ListAlias="Documents">
<Eq>
<FieldRef Name="DocId" RefType="ID" />
<FieldRef Name="ID" List="Documents" />
</Eq>
</Join>
</Joins>
<ProjectedFields>
<Field ShowField="DocumentName" Type="Lookup" Name="Documents" List="Documents" />
</ProjectedFields>
<Query />
</View>