我有以下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