2011-03-30 72 views
0

我有以下CAML查询以编程方式筛选列表:CAML查询使用“会员类型=‘CurrentUserGroups’”不会返回任何结果

<Query> <Where> <And> <Geq><FieldRef Name='notificationExpires' /><Value IncludeTimeValue='TRUE' Type='DateTime'>2011-03-30T00:00:00Z</Value></Geq> <Or> <Membership Type='CurrentUserGroups'><FieldRef Name='notificationTargetRoles'/></Membership> <Contains><FieldRef Name='notificationTargetRoles'/><Value Type='User'>MyDomain\administrator</Value></Contains> </Or> </And> </Where> </Query>

当我执行此相同的查询(在相同的运行帐户)在U2U CAML查询生成器我得到过滤的用户,组和日期。 当在代码中应用完全相同的过滤器时,组不会出现在结果中。

什么可以是组过滤器(CurrentGroups)不返回任何结果?

用于施加滤波器的代码是:

SPListItemCollection items = null; 
     SPSecurity.RunWithElevatedPrivileges(delegate() 
     { 
      using (SPSite elevatedSite = new SPSite(theSiteName)) 
      { 
       using (SPWeb elevatedWeb = elevatedSite.OpenWeb()) 
       { 
        SPList alertList = elevatedWeb.Lists[theListName]; 
        SPQuery query = new SPQuery(); 


        query.Query = "<Where><And><Geq><FieldRef Name='notificationExpires' /><Value IncludeTimeValue='TRUE' Type='DateTime'>2011-03-30T00:00:00Z</Value></Geq> <Or><Membership Type='CurrentUserGroups'><FieldRef Name='notificationTargetRoles'/></Membership><Contains><FieldRef Name='notificationTargetRoles'/><Value Type='User'>BSFLMK\administrator</Value></Contains></Or></And></Where>"; 

        items = alertList.GetItems(query); 
       } 
      } 
     }); 

回答

0

事实证明,除去“SPSecurity.RunWithElevatedPrivileges(delegate()”部分校正的问题

+0

事实上,在升高的部位的情况下,该安全上下文的是,系统的帐户 – Alexey 2012-11-01 14:21:14

相关问题