CSOM Obter ListItem da pasta
-
10-12-2019 - |
Pergunta
Em um aplicativo no qual estou trabalhando, estou interagindo com o SharePoint (2010) por meio do modelo de objeto do lado do cliente .NET e tentando levar em conta um grande número de configurações possíveis de bibliotecas de documentos.
No caso de uma biblioteca de documentos ter a aprovação de conteúdo habilitada, se eu criar um novo Folder
objeto, o status de aprovação se aplica a este ListItem
também:
Como posso obter uma referência para o ListItem
esse é o recém-criado Folder
objeto?
Eu preciso definir esse valor para SPModerationStatusType.Approved
programaticamente quando crio uma nova pasta, mas não consigo encontrar uma maneira de modificar os campos do ListItem
visto que só tenho um Folder
objeto.
Eu quero pegar um ListItem
objeto para que eu possa fazer algo assim:
Trabalhando com aprovação/moderação de conteúdo no CSOM
Editar:
Para o SharePoint 2013, aparentemente eles levaram isso em consideração e adicionaram um Folder.ListItemAllFields
propriedade que seria exatamente o que preciso aqui, mas esta propriedade não está disponível para o CSOM 2010.
Solução
Eu resolvi isso usando um CamlQuery
diretamente após a criação para retornar pastas com o mesmo nome de um 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();
Com um pouco de validação do item posso definir a propriedade conforme preciso.