CSOM Obtener ListItem de Carpeta
-
10-12-2019 - |
Pregunta
En una aplicación que estoy trabajando, estoy interactuar con SharePoint (2010) a través de el .NETO del Lado del Cliente Modelo de Objetos, y estoy tratando de dar cuenta de un gran número de configuraciones posibles de las bibliotecas de documentos.
En el caso de que un documento de la biblioteca tiene la aprobación de contenido activada, si puedo crear un nuevo Folder
objeto, el estado de aprobación se aplica a este ListItem
así:
¿Cómo puedo obtener una referencia a la ListItem
que es el recién creado Folder
objeto?
Necesito establecer este valor a SPModerationStatusType.Approved
mediante programación al crear una nueva carpeta, pero no puede encontrar una manera de modificar los campos de la ListItem
dado que sólo tengo una Folder
objeto.
Quiero conseguir un ListItem
objeto para que yo pueda hacer algo como esto:
Trabajando Con la Aprobación de Contenido / Moderación En CSOM
Editar:
Para SharePoint 2013, que han aparentemente tomado esto en consideración y han añadido un Folder.ListItemAllFields
propiedad que sería exactamente lo que necesito aquí, pero esta propiedad no está disponible para el 2010 CSOM.
Solución
Lo resuelto por el uso de un CamlQuery
directamente después de la creación a la devolución de las carpetas con el mismo nombre como un 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();
Con un poco de validación del elemento I puede establecer la propiedad como el que necesito.