0

プログラムでリストをフィルタリングするための次のCAMLクエリがあります。

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

1 に答える 1

0

「」の部分を削除するとSPSecurity.RunWithElevatedPrivileges(delegate()問題が修正されたことがわかります

于 2011-03-30T15:53:19.863 に答える