CSOM Ottieni ListItem della cartella
-
10-12-2019 - |
Domanda
In un'applicazione sto lavorando, sto interagendo con SharePoint (2010) tramite il modello di oggetto .NET client-laterale client e sto cercando di tenere conto di un numero elevato di possibili configurazioni di librerie di documenti. Nell'istanza che una libreria documenti ha abilitato l'approvazione dei contenuti, se creo un nuovo oggetto Folder
, lo stato di approvazione si applica anche a questo ListItem
:
Come posso ottenere un riferimento al ListItem
che è l'oggetto Folder
di nuova creato?
Ho bisogno di impostare questo valore su SPModerationStatusType.Approved
programmaticamente quando creo una nuova cartella, ma non riesco a trovare un modo per modificare i campi del ListItem
dato che ho solo un oggetto Folder
.
Voglio ottenere un oggetto ListItem
in modo da poter fare qualcosa del genere:
Lavorando con approvazione / moderazione del contenuto in csom < / P >.
Modifica:
Per SharePoint 2013, hanno apparentemente preso in considerazione questo e hanno aggiunto un Folder.ListItemAllFields
proprietà che sarebbero esattamente ciò di cui ho bisogno qui, ma questa proprietà non è disponibile per il CSOM 2010.
Soluzione
I solved this by using a CamlQuery
directly after creation to return folders with the same name as a ListItemCollection
:
SP.CamlQuery query = new SP.CamlQuery();
query.ViewXml = "<View Scope='RecursiveAll'>" +
"<Query>" +
"<Where>" +
"<And>" +
"<Eq>" +
"<FieldRef Name='ContentType'/>" +
"<Value Type='Text'>Folder</Value>" +
"</Eq>" +
"<Eq>" +
"<FieldRef Name='FileLeafRef'/>" +
"<Value Type='Text'>" + subFolderName + "</Value>" +
"</Eq>" +
"</And>" +
"</Where>" +
"</Query>" +
"</View>";
SP.ListItemCollection items = list.GetItems(query);
clientContext.Load(items);
clientContext.ExecuteQuery();
With a little validation of the item I can set the property as I need.