Sto provando a scrivere una query CAML eseguita su uno SPList specifico, con scope in una cartella specifica, ricorsiva da quel punto e restituisce tutti i ListItems (che soddisfano un criterio) e le cartelle .Query CAML che include le cartelle nel set di risultati
Ecco il codice per la query che sembra dovrebbe funzionare (formattato per migliorare la leggibilità):
SPQuery query = new SPQuery();
query.Query = "
<Where>
<Or>
<Contains>
<FieldRef Name=\"FileRef\" />
<Value Type=\"Text\">foo</Value>
</Contains>
<Eq>
<FieldRef Name=\"FSObjType\" />
<Value Type=\"Lookup\">1</Value>
</Eq>
</Or>
</Where>";
query.ViewFields = "
<FieldRef Name=\"CustomField1\" Nullable=\"TRUE\" />
<FieldRef Name=\"CustomField2\" Nullable=\"TRUE\" />
<FieldRef Name=\"CustomField3\" Nullable=\"TRUE\" />
";
query.RowLimit = 500;
query.ViewAttributes = "Scope=\"RecursiveAll\"";
query.Folder = startingFolder;
DataTable dt = myList.GetItems(query).GetDataTable();
Quindi - restituisce questo solo i ListItems - nessuna cartella.
Se rimuovo le altre condizioni dalla query, lasciando solo il FSObjType=1
, viene visualizzata un'eccezione COM "Impossibile completare questa azione. Riprovare".
Se quindi rimuovo ViewFields, lasciando solo il Scope=RecursiveAll
e FSObjType=1
, ottengo un risultato vuoto impostato indietro.
Hai mai risolto questo? Ho lo stesso problema e, a meno che non ci sia una soluzione, avrò bisogno di andare avanti e in realtà scrivere una funzione ricorsiva per farlo. – jeremcc
@codeflunky purtroppo no, non ho mai funzionato correttamente. –
@codeflunky se trovi una soluzione, per favore postala qui! –