2013-01-24 151 views
2

使用2007年的SharePoint,并试图通过一个名为StudentName领域筛选项目列表筛选列出了用户名:的Sharepoint通过CAML

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

我有和无查询标签试了一下,都无济于事,我已经也改变了用户ID的类型用户作为最后的手段,仍然没有喜悦。

非常难倒,所以任何投入热烈欢迎。谢谢。

+0

您是否回收应用程序池,以便部署组件使用? – Chriseyre2000

+0

我这么认为,只是在错过的情况下回收,仍然有相同的问题 – Moza

回答

2

OrderBy caluse需要拿出的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。查询对象)。另外,您仍然可以使用U2U CAML创建器为您节省构建查询本身的时间(http://www.u2u.be/Tools/SharePointCamlQueryBuilder.aspx);而且,您还可以使用U2U CAML创建器来节省构建查询本身的时间(http://www.u2u.be/Tools/SharePointCamlQueryBuilder.aspx)。虽然它是为2007年制造的,但它也适用于2010年。

大卫英镑/ SICG - http://www.sterling-consulting.com