我有以下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);
}
}
});
事实上,在升高的部位的情况下,该安全上下文的是,系统的帐户 – Alexey 2012-11-01 14:21:14