Query CAML per individuare SPFolder specifica nidificata nella struttura della raccolta documenti

StackOverflow https://stackoverflow.com/questions/174602

  •  05-07-2019
  •  | 
  •  

Domanda

Sembra che la ricerca con CAML e SPQuery non funzioni correttamente con i metadati personalizzati, quando si cercano SPFolder anziché file o quando si cercano tipi di contenuto personalizzati. Ho usato U2U per testare una varietà di query e non sono arrivato da nessuna parte. I documenti non sono molto completi sull'argomento e neanche Google aiuta.

In un test, sto cercando di individuare eventuali SPFolder nella struttura che siano un tipo di contenuto personalizzato specifico. Se capisco correttamente CAML, questo dovrebbe funzionare:

<Query>
    <Where>
        <Eq>
            <FieldRef Name='ContentType' />
            <Value Type='Text'>CustomTypeName</Value>
        </Eq>
    </Where>
</Query>

In un altro test, sto cercando di individuare qualsiasi SPFolder con una proprietà di metadati personalizzata impostata su un valore specifico.

<Query>
    <Where>
        <Eq>
            <FieldRef Name='CustomProp' />
            <Value Type='Text'>SpecificPropValue</Value>
        </Eq>
    </Where>
</Query>

In entrambi i casi, sto impostando la radice per la ricerca su una raccolta documenti che contenga cartelle, che contengano cartelle, che contengano cartelle (vedi). Inoltre, sto impostando SPQuery per la ricerca ricorsiva.

La cartella che sto cercando di fare due passi in basso è la più in basso nell'albero. Non voglio iterare fino in fondo per individuare manualmente le cartelle in questione.

MODIFICA Potrebbe anche essere utile sapere che sto usando sia SPList.GetItems con SPQuery come argomento, sia SPWeb.GetSiteData con SPSiteDataQuery come argomento. Al momento sembra che le cartelle non siano incluse nel set di ricerca per nessuna di queste query.

Qualsiasi aiuto sarebbe molto apprezzato.

È stato utile?

Soluzione

Dopo ulteriori ricerche, sto rispondendo alla mia domanda.

Apparentemente i metodi che sto usando per interrogare non restituiscono SPFolder come elementi nel set di risultati. Vengono restituiti solo gli elementi dell'elenco, in pratica solo i documenti.

La mia correzione consisteva nell'eseguire una query CAML per tutti i documenti con un determinato tag / valore di metadati e quindi utilizzare la cartella principale della prima come cartella rappresentativa per il set. Funziona abbastanza bene per le mie esigenze.

Altri suggerimenti

Prova ad aggiungere SharePoint Manager e Stramit CAML Viewer al tuo set di strumenti.

Ho trovato entrambi molto importanti per capire i problemi CAML.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top