【问题标题】:Sharepoint - Filtering lists by userid via CAMLSharepoint - 通过 CAML 按用户 ID 过滤列表
【发布时间】:2013-01-08 12:26:26
【问题描述】:

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

非常难过,因此热烈欢迎任何意见。谢谢。

【问题讨论】:

  • 你有没有回收应用程序池以便使用部署的组件?
  • 我想是的,只是回收以防遗漏,仍然有同样的问题

标签: c# sharepoint-2007 filtering caml sharepoint-list


【解决方案1】:

OrderBy 子句需要出现在 Where 子句之后:

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-17
      • 2022-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-20
      • 2012-11-20
      相关资源
      最近更新 更多