Est-il un moyen pour obtenir l'objet d'un Dossier de ListItem?
Je vais essayer d'obtenir le Dossier de l'objet par son chemin d'accès dans SharePoint 2010 client demande de l'aide Côté Client (Modèle d'Objet.Net 4.0).
J'ai besoin de vérifier si le dossier décrit par 'folderPath variable existe dans la bibliothèque, puis obtenir l'objet d'un Dossier pour d'autres opérations. Pour améliorer les performances, j'ai choisi d'utiliser CAML requête pour filtrer la liste.
Mon code:
IEnumerable<List> library = this.clientContext.LoadQuery(
this.clientContext.Web.Lists.Where(p => p.Title == this.documentLibrary));
this.clientContext.ExecuteQuery();
List libraryList = library.FirstOrDefault();
//code to handle libraryList == null
CamlQuery camlQuery = new CamlQuery();
camlQuery.ViewXml =
"<View Scope=\"RecursiveAll\">" +
"<Query>" +
"<Where>" +
"<And>" +
"<Eq>" +
"<FieldRef Name=\"FSObjType\"/>" +
"<Value Type=\"Integer\">1</Value>" +
"</Eq>" +
"<Eq>" +
"<FieldRef Name=\"FileRef\" />" +
"<Value Type=\"Text\">" + folderPath + "</Value>" +
"</Eq>" +
"</And>" +
"</Where>" +
"</Query>" +
"</View>";
ListItemCollection items = libraryList.GetItems(camlQuery);
clientContext.Load(items);
clientContext.ExecuteQuery();
À ce stade, tout est OK. Mais je n'ai aucune idée de comment obtenir le 'Dossier' objet à partir d'un élément. J'ai essayé de le faire de cette façon:
Folder folder = items.FirtsOrDefault().Folder;
clientContext.Load(folder);
clientContext.ExecuteQuery();
et de cette façon (utilisé à la place des trois dernières lignes du premier extrait de code):
ListItemCollection items = libraryList.GetItems(camlQuery);
clientContext.Load(items, collection => collection.Include(item => item.Folder));
clientContext.ExecuteQuery();
Mais dans les deux cas, j'ai eu une Exception:
1er: Champ 'ou bien 'Dossier' existe pas.'
2e: 'Colonne 'Dossier' n'existe pas. Il peut avoir été supprimé par un autre utilisateur".
Est-il un moyen de le faire? Ou peut-être que je suis en train de faire quelque chose de mal? Merci d'avance pour l'aide.
OriginalL'auteur adams | 2014-03-14
Vous devez vous connecter pour publier un commentaire.
Il dépend en réalité de la version de SharePoint est utilisé.
SharePoint 2013
Dans SharePoint 2013 otite chronique ListItem.Dossier de propriété obtient un dossier objet qui est associé à un élément de dossier.
SharePoint 2010
Dans SharePoint 2010 otite chronique de propriétés de Dossier est pas exposés pour ListItem objet.
La méthode suivante peut être utilisée pour récupérer les
Folder
associés àListItem
:Exemple:
ListItem.Folder
propriété est prise en charge dans SP 2013 et non pas en 2010.OriginalL'auteur Vadim Gremyachev