2013-01-24 150 views
2

使用2007年的SharePoint,並試圖通過一個名爲StudentName領域篩選項目列表篩選列出了用戶名:的Sharepoint通過CAML

<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的類型用戶作爲最後的手段,仍然沒有喜悅。

非常難倒,所以任何投入熱烈歡迎。謝謝。

+0

您是否回收應用程序池,以便部署組件使用? – Chriseyre2000

+0

我這麼認爲,只是在錯過的情況下回收,仍然有相同的問題 – Moza

回答

2

OrderBy caluse需要拿出的Where條款後:

userQuery.Query = 
@"<Where> 
    <Eq> 
     <FieldRef Name='StudentName' LookupId='TRUE' /> 
     <Value Type='Integer'><UserID /></Value> 
    </Eq> 
</Where> 
<OrderBy> 
    <FieldRef Name='Rank'/> 
</OrderBy>"; 
-2

很好的回答 - 但要注意一兩件事 - 使用SPQuery對象時,你永遠不指定標籤(這些在內部包含在SPQuery。查詢對象)。另外,您仍然可以使用U2U CAML創建器爲您節省構建查詢本身的時間(http://www.u2u.be/Tools/SharePointCamlQueryBuilder.aspx);而且,您還可以使用U2U CAML創建器來節省構建查詢本身的時間(http://www.u2u.be/Tools/SharePointCamlQueryBuilder.aspx)。雖然它是爲2007年製造的,但它也適用於2010年。

大衛英鎊/ SICG - http://www.sterling-consulting.com