2

使用 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 作为最后的手段,仍然没有乐趣。

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

4

2 回答 2

2

OrderBy原因需要在子句Where之后:

userQuery.Query = 
@"<Where>
    <Eq>
        <FieldRef Name='StudentName' LookupId='TRUE' />
        <Value Type='Integer'><UserID /></Value>
    </Eq>
</Where>
<OrderBy>
    <FieldRef Name='Rank'/>
</OrderBy>";
于 2013-01-24T17:13:35.823 回答
-2

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

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

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

于 2013-01-25T14:40:47.430 回答