Estoy intentando extraer una lista de SharePoint mediante CAML y quiero que la lista devuelta ordene por un campo específico. El campo es un campo de búsqueda. La consulta vuelve desordenada cuando configuro OrderBy para que sea el campo de búsqueda, si utilizo un campo de texto está bien.Consulta de CAML a una lista de SharePoint, ordenada por un campo de búsqueda
El constructor de consultas CAML de U2U devolverá esta consulta ordenada cuando la construya en el editor.
He aquí un fragmento de código de cómo crear y ejecutar la consulta:
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);
El resto es un bucle que analiza la colección y lo muestra. Puedo publicar eso si es necesario.
Aquí está la llamada SOAP realizada por la herramienta de consulta CAML, la eliminé de la secuencia HTTP con wireshark.
<?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>
Por alguna razón, la herramienta de consulta CAML funciona, mi código no. Alguien sabe por qué? Gracias por adelantado.
Editado para reflejar el código que estoy realmente probando. Tenía un código que tenía valores incorrectos.
Tienes razón. Lo siento, estaba probando algo. Estaba usando "título" para ver si se ordenaría en un campo de texto, en lugar de una búsqueda. El código que estaba usando tenía el "paState" como campo y no funciona. Corté y pegué la versión incorrecta. Se ordenará en un campo de texto, pero ahora en un campo de búsqueda. – kevingreen
Los valores ascendentes tampoco son los mismos, pero lo he probado de las dos formas en que todavía no se ordenará en la consulta C#. – kevingreen
Woops Tuve un error tipográfico. Tampoco debe incluir el nodo '' cuando use SPQuery. Ver mi actualización –