Frage

Mir fehlt etwas, das so einfach sein muss, dass es nicht einmal wert ist, gefragt zu haben ... aber ich habe eine Objekt -ID (GUID) ... wie finde ich das Dokument heraus, auf das es hinweist?

Zum Beispiel habe ich eine GUID von 137DA01F-9AFD-5d9d-80C7-02AF85C822A8 und müssen wissen, auf welche Datei/URL sie zeigt.

War es hilfreich?

Lösung

Wenn Sie den SPWeb kennen, aber nicht die Dokumentbibliothek, können Sie verwenden SPWeb.GetFile:

SPFile file = web.GetFile(guid);

Andere Tipps

Einfachster Fall

Beachten Sie, dass Sie wissen, dass das Dokument in der Standard -Vorlage der Team -Site in Standard -Bibliothek "Shared Dokumente" gespeichert ist. Sie sollten diesen Code verwenden:

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[])

MSDN Referenzen:

  1. SplistItemcollection.Item (GUID)
  2. Spafile.openbinary (mit Beispielcode)

Bibliothek mit Ordnern

In komplexerer Fall, wenn Sie einige Ordner in Ihrer Dokumentbibliothek haben, ist es wahrscheinlich am besten, die CAML -Abfrage für diesen Zweck zu verwenden:

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);

Bibliothek unbekannt

Wenn Sie überhaupt nicht wissen, in welcher Bibliothek die Datei gespeichert ist, sollten Sie alle Bibliotheken der Website durchlaufen:

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

Dokument -IDs

Außerdem sollten Sie sicherlich über die Funktion "Dokument -IDs" lesen, mit denen Sie ein Dokument von überall aus verweisen können:

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

Hinweis: Ihre GUID ist natürlich keine Dokument -ID.

Da ist das Splist.GetItembyuniqueId Funktion, aber wenn Sie nicht wissen, welche Liste Sie suchen sollen, haben Sie kein Glück.

Wenn Sie SharePoint 2010 verwenden, schauen Sie sich die Dokument -ID -Funktionalität an (die eine eindeutige ID an ein Listenelement anschließt und dann die Suche nach dem Element sucht). Abhängig von Ihren Anforderungen können Sie "findIteminSiteCollectionByuniqueId" unter Verwendung eines ähnlichen Ansatzes zur Dokument -IDs implementieren, die GUID zu einer verwalteten Eigenschaft machen und eine Suche über Code durchführen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit sharepoint.stackexchange
scroll top