2

Sharepoint 2007 を使用して、StudentName というフィールドでアイテムのリストをフィルタリングしようとしています。

<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のタイプをユーザーに変更しましたが、まだ喜びはありません。

非常に困惑しているので、どんな意見でも大歓迎です。ありがとう。

4

2 に答える 2

2

OrderBycaluse はWhere句の後に来る必要があります。

userQuery.Query = 
@"<Where>
    <Eq>
        <FieldRef Name='StudentName' LookupId='TRUE' />
        <Value Type='Integer'><UserID /></Value>
    </Eq>
</Where>
<OrderBy>
    <FieldRef Name='Rank'/>
</OrderBy>";
于 2013-01-24T17:13:35.823 に答える
-2

良い答えですが、SPQuery オブジェクトを使用する場合は、タグを指定しないでください (これらは SPQuery.Query オブジェクトに内部的に含まれています)。

また、引き続き U2U CAML クリエーターを使用して、クエリ自体を作成する時間を節約できます (http://www.u2u.be/Tools/SharePointCamlQueryBuilder.aspx)。2007年に作成されましたが、2010年にも機能します。

David Sterling/SICG - http://www.sterling-consulting.com

于 2013-01-25T14:40:47.430 に答える