Lists.asmx - GetListCollection

Récupération de l'ensemble des listes présentes sur un site au travers d'un WebService

03/05/2009 2 511 lectures 1 commentaire 5/5 (2 votes) Sébastien Sougnez

La structure interne ainsi que le design d'AreaProg ont récemment été modifiés.
Suite à cela, le format de certains articles a été perturbé. Le problème est connu et en cours de résolution. Merci de votre compréhension.

Dans ce cours, nous allons voir une fonction très simple du WebService Lists.asmx, c'est la fonction GetListCollection qui permet simplement de récupérer la liste des listes présentes sur le site relatif au WebService. Encore une fois, nous allons reprendre l'application développée dans les deux cours précédents. Vous n'avez évidemment pas besoin d'avoir construit l'intégralité de l'application pour comprendre ce cours, mais cela pourrait s'avérer utile. Notamment en ce qui concerne l'ajout de la référence au WebService. Effectivement, pour pouvoir utiliser ce dernier, vous allez devoir ajouter une Web reference au WebService Lists.asmx. Nous avons déjà expliqué comment faire cela dans le cours sur la fonction GetLists. Nous vous conseillons de lire le début de ce cours pour savoir comment ajouter la référence au WebService, sans cela, l'application ne fonctionne pas. Nous avions également ajouté la variable de classe suivante :
private System.Net.NetworkCredential credential; 
Nous avions initialisé cet objet dans le constructeur de notre form :
credential = new System.Net.NetworkCredential("user", "pass"); 
Où vous deviez remplacer user et pass par les informations de connexion d'un membre abilité à exécuter des opérations sur le site SharePoint. Nous allons maintenant ajouter un onglet dans le contrôle TabControl qui aura comme texte GetListCollection. Disposez ensuite des contrôles de cette manière dans cet onglet :
Image
La grosse zone de texte est un TextBox. Son nom devra être txtResultGetListCollection. Modifiez également sa propriété MultiLine sur True et ScrollBars sur Both. La ListBox présente en dessous de ce TextBox devra porter le nom de lbLists. Cliquez maintenant une fois sur le TabControl et rendez vous dans la fenêtre de propriété. Cliquez sur le petit éclair au dessus de cette liste pour voir la liste d'événements attachés à cette liste. Repérez l'événement SelectedIndexChanged et double-cliquez dessus. Tapez ce code dans cet événement :
if (tabControl1.SelectedTab.Text == "GetListCollection")
{
	Lists list = new Lists();
	string url = txtUrl.Text;

	if (url[url.Length - 1] != '/')
		url += '/';

	url += "_vti_bin/Lists.asmx";

	list.Url = url;
	list.Credentials = credential;

	XmlNode lists = list.GetListCollection();

	txtResultGetListCollection.Text = lists.InnerXml;

	lbLists.Items.Clear();

	foreach (XmlNode listInstance in lists.ChildNodes)
		lbLists.Items.Add(listInstance.Attributes["Title"].Value);
} 
Nous commençons d'abord par vérifier que l'onglet cliqué est celui qui contient le texte GetListCollection pour ne pas récupérer la liste des listes à chaque fois que l'on click sur un onglet de la liste. La ligne suivante nous permet d'instancier un objet de type Lists qui va nous permettre de communiquer avec notre WebService. Ensuite, comme nous l'avons déjà expliqué dans les cours précédents, nous testons actuellement notre application sur les WebService de la machine locale, mais l'intêret des WebService est de pouvoir spécifier l'URL de celui que nous voulons utiliser. Nous utilisons donc les quelques lignes de code du code précédent pour former l'URL correcte vers ce WebService. Nous récupérons tout d'abord l'adresse contenue dans le champ dans lequel l'utilisateur devra rentrer l'URL du site sur lequel on doit récupérer l'ensemble des listes. Si cette URL ne se termine pas par le caractère /, nous l'ajoutons. Enfin, nous ajoutons _vti_bin/Lists.asmx pour former une URL complète et exacte au WebService Lists.asmx. Une fois que nous avons cette url, nous l'assignons à la propriété Url de l'objet de type Lists. Nous modifions ensuite les credential de cet objet pour nous autoriser l'accès en utilisant les credential créés précédemment. La suite du code est plus interessante. La fonction GetListCollection n'attend aucun paramètre, elle est donc extrêmement simple à utiliser. Nous apelons donc cette fonction et récupérons ce qu'elle renvoit dans un objet du type XmlNode nommé lists. La première chose que nous faisons est de modifier le texte contenu dans le TextBox par le code XML contenu dans la propriété innerXml de l'objet lists. Si vous exécutez votre programme, vous verrez que ce code est un ensemble d'élément List représentant chacun une liste. Nous nous servons donc d'une boucle foreach pour parcourir l'ensemble de ces éléments (donc les noeuds enfants de l'élément de base). Pour chacun des éléments analysés, nous affichons la valeur de son attribut Title pour afficher le nom de la liste. Au final, votre programme devrait ressembler à celui-ci :
Image
Comme vous le voyez, l'ensemble des listes du site a bien été récupéré. Dans le cours suivant, nous verrons comment ajouter une liste à un site SharePoint.

Noter

Veuillez vous identifier ou vous inscrire pour donner une note à cet article.

Commentaires / Questions

Adrien M (07/05/2010 - 14:20)

Thanks!

Veuillez vous identifier ou vous inscrire pour réagir à cet article.

Avatar

Sébastien Sougnez

Envoyer un mail Site web Windows live messenger LinkedIn Twitter Facebook MVP Administrateur

25754 points