Question

Il me manque quelque chose qui doit être si simple qu'il est même pas demander la peine ... mais j'ai un ID d'objet (GUID) ... Comment puis-je savoir le document il pointe?

Par exemple, j'ai un GUID de 137DA01F-9AFD-5d9d-80C7-02AF85C822A8 et le besoin de savoir quel fichier / url il pointe.

Était-ce utile?

La solution

Si vous connaissez le SPWeb, mais pas la bibliothèque de documents, vous pouvez utiliser SPWeb.GetFile :

SPFile file = web.GetFile(guid);

Autres conseils

Simpliest cas

Considérez-vous que le document est stocké dans la norme « Documents partagés » bibliothèque de l'équipe modèle de site, vous devez utiliser ce code:

var library = web.GetListFromUrl("http://site/Shared%20Documents/Forms/AllItems.aspx");
var file = library.Items[new Guid("137DA01F-9AFD-5d9d-80C7-02AF85C822A8")].File;
// file.Url - site-relative url of the file
// file.OpenBinary() - get file contents (returns byte[])

Références MSDN:

  1. SPListItemCollection.Item (Guid)
  2. SPFile.OpenBinary (avec un exemple de code)

Bibliothèque avec des dossiers

Dans le cas plus complexe, lorsque vous avez des dossiers dans votre bibliothèque de documents, probablement la meilleure façon sera d'utiliser la requête CAML à cet effet:

var query = new SPQuery();
query.ViewAttributes = "Scope=\"Recursive\"";
query.View = 
@"<Where>
  <Eq>
    <FieldRef Name=\"UniqueId\">
    <Value Type='Text'>137DA01F-9AFD-5d9d-80C7-02AF85C822A8</Value>
  </Eq>
</Where>";
var items = library.GetItems(query);

Bibliothèque inconnue

Si vous ne savent même pas dans quelle bibliothèque le fichier est stocké, vous devez passer par toutes les bibliothèques du site:

 foreach (var library in web.Lists)
 {
     if (!library.Hidden && library is SPDocumentLibrary)
     {
         // ... try to get the file and so on
     }
 }

ID document

En outre, vous devriez certainement lire sur la fonction ID du document, qui vous permet de faire référence à un document où que vous soyez:

http: / /blogs.technet.com/b/blairb/archive/2009/10/20/new-document-id-feature-in-sharepoint-2010.aspx

Note:. Votre Guid, bien sûr, n'est pas un numéro de document

Il y a la fonction SPList.GetItemByUniqueId , mais si vous ne sais pas quelle liste vous recherchez pas de chance.

Si vous utilisez SharePoint 2010, regardez la fonctionnalité ID document (qui se fixe un identifiant unique à un élément de la liste et utilise ensuite Rechercher pour trouver l'article). En fonction de vos besoins, vous pourriez envisager de mettre en œuvre « FindItemInSiteCollectionByUniqueId » en utilisant une approche similaire à ID document, faisant une guid propriété gérée et effectuer une recherche par code.

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top