Question

est-il possible d'utiliser des API de SharePoint intégrées pour ouvrir un fichier, quel que soit le Web et la bibliothèque, il est dans?

Exemple:

Compte tenu du fichier: /subsitea/publishiningimages/myimage.jpg Je veux l'ouvrir et obtenir l'élément de la liste, mais utiliser ceci échoue:

var url = "/subsiteA/PublishingImages/myimage.jpg";
var file = SPContext.Current.Site.RootWeb.GetFile(url);
SPListItem item = file.GetListItem(); //Fails here with item not in library error

Naturellement, il ne fonctionnera pas car le fichier n'est pas situé dans la bande racine, mais existe-t-il un moyen générique de localiser le fichier, quelle que soit la bande Web et la bibliothèque et récupérez l'objet Splistitem lié au fichier?

Était-ce utile?

La solution

Very similar to above, the SPSite object does actually remember the URL it was opened with - so you don't have to give a Web name. You should be able to use something like:

string url= "Full URL to File";
using (SPSite site = new SPSite(url)){
  using (SPWeb web = site.OpenWeb()) 
  { 
    SPFile file = web.GetFile(url); 
    SPListItem item = file.ListItemAllFields; 
  }      
}

Autres conseils

Je ne pense pas qu'il soit possible d'obtenir un fichier de telle manière.J'ai aussi vraiment voulu savoir si possible.

Autre moyen, vous devez coder comme:

Utilisation (SPSITE SITE= NOUVEAU SPSITE ("YOURSITEURL")) {

using (SPWeb web = site.OpenWeb("subsiteA"))
 {
    SPFile file = web.GetFile("/subsiteA/PublishingImages/myimage.jpg");
    SPListItem item = file.ListItemAllFields;
 }

}

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