Domanda

mi manca qualcosa che deve essere così semplice che non è nemmeno la pena chiedere ... ma ho un ID oggetto (GUID) ... Come faccio a capire il documento a cui punta?

Per esempio io ho un GUID di 137DA01F-9AFD-5d9d-80C7-02AF85C822A8 e necessità di sapere quali file / URL a cui punta.

È stato utile?

Soluzione

Se si conosce lo SPWeb ma non la raccolta documenti, è possibile utilizzare SPWeb.GetFile :

SPFile file = web.GetFile(guid);

Altri suggerimenti

caso più semplice

Si consideri a sapere che il documento è memorizzato in standard "Documenti Condivisi" libreria dal modello di sito del team, è necessario utilizzare questo codice:

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

riferimenti MSDN:

  1. SPListItemCollection.Item (Guid)
  2. SPFile.OpenBinary (con codice di esempio)

Libreria con le cartelle

Nel caso più complesso, quando si dispone di alcune cartelle nella libreria di documenti, probabilmente il modo migliore sarà quello di utilizzare la query CAML per questo scopo:

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

sconosciuto biblioteca

Se ancora non si sa in quale libreria il file viene memorizzato, si dovrebbe passare attraverso tutte le biblioteche del sito:

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

documento ID

Inoltre, si dovrebbe sicuramente letto sulla funzione ID dei documenti, che consente di fare riferimento a un documento da qualsiasi luogo:

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

. Nota: il Guid, naturalmente, non è un ID di documento

C'è la href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.splist.getitembyuniqueid.aspx"> SPList.GetItemByUniqueId funzione

Se si utilizza SharePoint 2010, un'occhiata alla funzionalità ID documento (che attribuisce un ID univoco per un elemento della lista e quindi utilizza Cerca di trovare la voce). A seconda delle proprie esigenze, si potrebbe considerare l'implementazione di "FindItemInSiteCollectionByUniqueId" utilizzando un approccio simile al documento ID, rendendo il un GUID gestito proprietà e la conduzione di una ricerca tramite codice.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top