SharePoint - 通过 CAML 按用户 ID 筛选列表

本文关键字:ID 筛选 列表 用户 通过 CAML SharePoint | 更新日期: 2023-09-27 17:55:56

>使用 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);

我已经尝试过带和不带查询标签,但无济于事,作为最后的手段,我还将 userID 的类型更改为 User,仍然没有乐趣。

非常难看,所以任何意见都热烈欢迎。谢谢。

SharePoint - 通过 CAML 按用户 ID 筛选列表

OrderBy caluse 需要在 Where 子句之后:

userQuery.Query = 
@"<Where>
    <Eq>
        <FieldRef Name='StudentName' LookupId='TRUE' />
        <Value Type='Integer'><UserID /></Value>
    </Eq>
</Where>
<OrderBy>
    <FieldRef Name='Rank'/>
</OrderBy>";

很好的答案 - 但请注意一件事 - 使用 SPQuery 对象时,您永远不会指定标记(这些标记在内部包含在 SPQuery.Query 对象中)。

此外,您仍然可以使用 U2U CAML 创建器来节省构建查询本身的时间(http://www.u2u.be/Tools/SharePointCamlQueryBuilder.aspx);虽然它是为 2007 年构建的,但它也适用于 2010 年。

大卫·斯特林/SICG - http://www.sterling-consulting.com