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:

Newly Created Folder

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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a sharepoint.stackexchange
scroll top