我試圖通過CAML從SharePoint拉清單,我想列表中返回一個特定的字段排序。該字段是查找字段。當我將OrderBy設置爲查找字段時,查詢返回無序,如果我使用文本字段就沒問題。當我在編輯器中建立它CAML查詢SharePoint列表,以便通過查找字段
的U2U CAML查詢生成器將返回此查詢訂購。
這裏是我如何建立和執行查詢的代碼片段:
String baseQuery = "<Query><Where><Eq><FieldRef Name='paApproved' /><Value Type='Boolean'>1</Value></Eq></Where><OrderBy><FieldRef Name='paState' Ascending='True' LookupValue='TRUE' /></OrderBy></Query>";
qStates.Query = baseQuery;
SPListItemCollection byState = web.Lists["paUpdates"].GetItems(qStates);
剩下的就是一個for循環,分析收集和顯示。如有必要,我可以發佈。
這裏是由CAML查詢工具進行的SOAP調用,從我使用Wireshark的HTTP流刮掉它。
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<GetListItems xmlns="http://schemas.microsoft.com/sharepoint/soap/">
<listName>paUpdates</listName>
<query>
<Query xmlns="">
<Where>
<Eq>
<FieldRef Name="paApproved" />
<Value Type="Boolean">1</Value>
</Eq>
</Where>
<OrderBy>
<FieldRef Name="paState" Ascending="False" />
</OrderBy>
</Query>
</query>
<viewFields>
<ViewFields xmlns="" />
</viewFields>
<queryOptions>
<QueryOptions xmlns="" />
</queryOptions>
</GetListItems>
</soap:Body>
</soap:Envelope>
無論出於什麼原因CAML查詢工具的工作原理,我的代碼不會。有人知道爲什麼提前致謝。
編輯以反映我實際測試的代碼。我有一些代碼的值不正確。
你說得對。對不起,我正在測試一些東西。我使用「標題」來查看它是否會在文本字段上排序,而不是查找。我使用的代碼確實有「paState」作爲字段,並且不起作用。我剪下並粘貼了錯誤的版本。它將排序在文本字段上,但現在在查找字段上。 – kevingreen 2011-02-07 16:08:51