J'essaie de répertorier le contenu d'un dossier dans SharePoint 2010 en utilisant son service Web.
C'est ce que j'ai jusqu'à présent, dites-moi si je suis trop compliqué si c'est le cas.
XNamespace z = "#RowsetSchema";
string lId = this.GetListID("Account");
string vId = this.GetViewID("All Documents", lId);
//this below, works, I"m getting the unique ID of folder...
string folderId = this.GetListData(lId, vId).Descendants(z + "row").
Where(x => x.Attribute("ows_LinkFilename").Value.Equals("FolderName")).
Select(x => x.Attribute("ows_UniqueId").Value).SingleOrDefault().ToString();
private string GetListID(string listName)
{
string listID;
try
{
XDocument doc = XDocument.Parse(_listClient.GetListCollection().ToString());
listID = (from x in doc.Elements().First().Elements()
where x.Attribute("Title").Value.Equals(listName)
select x.Attribute("ID").Value).FirstOrDefault();
}
catch
{
throw;
}
return listID;
}
private string GetViewID(string viewName, string listID)
{
string viewID = null;
try
{
XDocument doc = XDocument.Parse(_viewClient.GetViewCollection(listID).ToString());
viewID = (from x in doc.Elements().First().Elements()
where x.Attribute("DisplayName").Value.Equals(viewName)
select x.Attribute("Name").Value).FirstOrDefault();
}
catch
{
throw;
}
return viewID;
}
private XDocument GetListData(string listID, string viewID)
{
XDocument list_data = null;
try
{
list_data = XDocument.Parse(_listClient.GetListItems(listID, viewID, null, null, "10000", null, null).ToString());
var q = (from x in list_data.Elements().First().Elements().First().Elements()
select new
{
Title = x.Attribute("ows_LinkTitle").Value,
Field1 = x.Attribute("ows_Field1").Value,
Field2 = x.Attribute("ows_Field2").Value
});
}
catch
{
throw;
}
return list_data;
}
Comme vous pouvez le voir, je peux obtenir l'ID unique du dossier en question. Mais alors quoi? Y a-t-il un autre service Web SharePoint que je dois utiliser avec l'ID de dossier pour obtenir son contenu?
Voici un exemple de la structure de l'URL pour laquelle j'essaye d'obtenir le contenu de:
https://spsite.domain.ca/testenv/account/000001
Le code ci-dessus me récupère l'ID unique du dossier 000001
mais alors je suis coincé là-bas ... je n'en vois pas GetFolderItems
ou quelque chose comme ça dans lists.asmx
ou d'autres services Web SP.
J'ai vu quelques exemples mais ils utilisent l'assemblage Microsoft.Sharepoint.dll
pour ce faire, ce que j'essaie d'éviter.
Je vous remercie!
Réponses:
0 pour la réponse № 1Je vais utiliser Microsoft.Sharepoint.Client
pour ça. Je n'avais aucune idée que SP2010 + offrait une telle fonctionnalité.