Récupérer le nom de dossier immédiat si un composant particulier est présent avec les services principaux


1

J'ai un nom de dossier principal (mf) comme 030 Main, qui a des dossiers (f), des sous-dossiers (sf) et des composants (c) comme ci-dessous. Mf- foler principal, f- dossier, c-composant. juste pour rendre simple, si c est présent, comment dois-je obtenir un nom f (nom de dossier).

Par exemple comme ci-dessous

100 Afrique (f) -> 110 Somalie (sf) -> 010 Play (c), 020 Vue d'ensemble (c), 030 Beach (c) 120 Inde (f) -> 110 Pune (sf) -> 010 Jouer (c), 020 Station (c), 030 Pêche (c) 120 Inde (f) -> 110 Kerala (sf) -> 010 Jouer (c)), 020 Station (c), 030 Plage (c), 040 vol (c)

Il existe également certains composants dans 030 Main.

Maintenant, je veux récupérer du contenu uniquement à partir des composants Beach. Avec lui je veux sous-dossier immédiat name.i.e (si la plage est présente besoin des noms de villes respectifs aussi comme la Somalie, kerala). J'ai essayé ci-dessous, d'abord utilisé le filtre de composants, puis récupéré tous les composants, puis vérifié pour "030 Beach" puis obtenir du contenu. Maintenant, je veux un nom de dossier qui a un composant "030 Beach".

OrganizationalItemItemsFilterData filter = new OrganizationalItemItemsFilterData(); 
      filter.ItemTypes = new[] { ItemType.Component }; 
      filter.Recursive = true; 

foreach (var id in client.GetListXml(folder, filter).Elements().ToList()) 
       { 
        string compTitle=id.Attribute("Title").Value; 
        string compId = id.Attribute("ID").Value; 

        StringBuilder sb = new StringBuilder(); 
        if (compTitle.Equals("030 Beach")) 
        { 

         ComponentData component1 = client.Read(compId, new ReadOptions()) as ComponentData; 
         var componentContent = component1.Content; 

}

+1

Salut Rachel, Dans votre question, je ne suis pas en mesure de voir le problème exact que vous êtes faci ng Pouvez-vous modifier votre question pour spécifier le problème que vous rencontrez. 30 déc.. 152015-12-30 06:35:13

  0

Il semble que vous essayez de classer les centres de villégiature selon les installations qu'ils ont. Cela pourrait être plus facile à faire en utilisant des mots-clés. 30 déc.. 152015-12-30 09:11:37

4

Une fois que vous obtenez l'objet ComponentData vous pouvez accéder à la propriété LocationInfo pour accéder à l'objet de dépôt (Folder) où le composant est situé

Vous pouvez récupérer le nom du dossier en ajoutant cette ligne à vous code:

string componentsOrganizationalItem = component1.LocationInfo.OrganizationalItem.Title;