使用Sharepoint 2007并尝试按名为StudentName的字段过滤项目列表:
<Field
ID="{GUID-REDACTED}"
Name="StudentName"
DisplayName="Student Name"
Type="User"
Group="STUDENT COLS" />
目前,这是用于过滤的CAML,当它通过U2U CAML查询生成器运行时,它返回正确的列表项而没有问题,但是当它部署到SharePoint时,它返回整个列表(即没有过滤)。
SPQuery userQuery = new SPQuery();
userQuery.Query = "<OrderBy>
<FieldRef Name='Rank'>
</FieldRef>
</OrderBy>
<Where>
<Eq>
<FieldRef Name='StudentName' LookupId='TRUE' />
<Value Type='Integer'><UserID /></Value>
</Eq>
</Where>"
SPListItemCollection userProjectBasket = PBL.GetItems(userQuery);
我已经尝试过使用和不使用Query标签,无济于事,我也将userID的类型更改为User作为最后的手段,仍然没有乐趣。
非常难过,所以任何意见都热烈欢迎。感谢。
答案 0 :(得分:2)
OrderBy
子句需要在Where
子句之后:
userQuery.Query =
@"<Where>
<Eq>
<FieldRef Name='StudentName' LookupId='TRUE' />
<Value Type='Integer'><UserID /></Value>
</Eq>
</Where>
<OrderBy>
<FieldRef Name='Rank'/>
</OrderBy>";
答案 1 :(得分:-2)
很好的答案 - 但请注意一件事 - 在使用SPQuery对象时,绝不指定标记(这些标记内部包含在SPQuery.Query对象中)。
此外,您仍然可以使用U2U CAML创建器为您节省构建查询的时间(http://www.u2u.be/Tools/SharePointCamlQueryBuilder.aspx);虽然它是为2007年制造的,但它也适用于2010年。
David Sterling / SICG - http://www.sterling-consulting.com