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.
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 :
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 :
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. Veuillez vous identifier ou vous inscrire pour donner une note à cet article.
Veuillez vous identifier ou vous inscrire pour réagir à cet article.
Adrien M (07/05/2010 - 14:20)