Implémentation de l’interface REST SharePoint Foundation
Dernière modification : vendredi 3 décembre 2010
S’applique à : SharePoint Foundation 2010
Cette partie de la procédure pas à pas sur la création d’un service Web WCF (Windows Communication Foundation) personnalisé montre comment créer une application Windows Forms dans Microsoft Visual Studio 2010 qui utilise ADO.NET Data Services et l’interface REST (Representational State Transfer) Microsoft SharePoint Foundation pour interagir avec des données de liste par le biais de deux contrôles DataGridView. L’interface REST SharePoint Foundation fournit le contexte de données permettant d’interagir avec une liste Projects et une liste Employees par le biais des deux contrôles. Le contrôle Employees affiche les employés associés à l’élément de projet que l’utilisateur a sélectionné dans le contrôle Projects. En outre, le contrôle Projects permet à l’utilisateur d’apporter des modifications aux éléments dans la source de données Projects et de mettre à jour les données de liste SharePoint avec ces modifications.
Création d’une application Windows Forms pour interagir avec des données de liste
Ouvrez Visual Studio, cliquez sur Fichier, pointez sur Nouveau, puis cliquez sur Projet. Dans la boîte de dialogue Nouveau projet, sélectionnez Visual Basic ou Visual C# dans la zone Modèles installés, puis sélectionnez Windows, sélectionnez Application Windows Forms et tapez ProjectTracker dans la zone Nom. Cliquez sur OK.
Pour vous connecter à des données stockées sur un site SharePoint, cliquez sur Données, puis cliquez sur Ajouter une nouvelle source de données. Dans l’Assistant Configuration de source de données, sélectionnez SharePoint, puis cliquez sur Suivant.
Dans la zone Ajouter une référence de service, tapez le chemin d’accès de ListData.svc, service qui permet d’accéder à l’interface REST SharePoint Foundation. Ce chemin d’accès doit inclure le site Web qui contient les listes et doit spécifier le répertoire virtuel _vti_bin, par exemple, http:// Server/sites/SiteCollection/WebSite/_vti_bin/ListData.svc. Pour ajouter la référence de service à votre projet, cliquez sur Aller à, sur OK, puis sur Terminer. La référence de service connecte votre application à l’interface REST et récupère un modèle de données d’entité du site SharePoint Foundation pour définir des classes d’entités. Les données de liste SharePoint Foundation sont attachées à cette référence de service en tant que source de données fortement typée.
Dans la vue Form1.cs Création, cliquez sur Données, puis cliquez sur Afficher les sources de données pour ouvrir la zone Sources de données. Pour fournir l’interface utilisateur permettant d’interagir avec les données de liste, faites glisser les contrôles DataGridView des listes Projects et Employees sur Form1.
Pour supprimer des colonnes non désirées de l’affichage dans chaque contrôle DataGridView, cliquez avec le bouton droit sur le contrôle concerné, cliquez sur Modifier les colonnes, puis, dans la zone Modifier les colonnes, sélectionnez chaque colonne dans la zone Colonnes sélectionnées et cliquez sur Supprimer. Dans le contrôle DataGridView Projects, supprimez toutes les colonnes, sauf Title (Titre), Description et Due Date (Date d’échéance). Dans le contrôle DataGridView Employees, supprimez toutes les colonnes sauf Full Name, Job Title et Team. Dans la zone Propriétés des colonnes dépendantes, définissez la colonne Title (Titre) de la liste Projects et la colonne Full Name de la liste Employees sur Remplissage, puis cliquez sur OK.
Pour remplir les contrôles DataGridView avec des données de liste issues du site Web SharePoint Foundation, double-cliquez sur le bord de Form1 pour afficher le code du formulaire. Ajoutez une instruction using pour importer l’espace de noms ServiceReference1 que vous avez créé et utilisez un constructeur pour créer un contexte de données fortement typé afin de représenter les données de liste. Vous pouvez utiliser ce contexte de données pour envoyer des demandes au site Web. Dans le constructeur, indiquez l’URI du service WCF qui fournit l’interface REST permettant d’accéder aux données de liste dans le site Web spécifié, comme suit.
Imports ProjectTracker.ServiceReference1 Imports System.Net Public Class Form1 Private Shared websiteUrl As String = "http://YourServer/sites/YourSiteCollection/YourSite" Private context As New MyWebsiteDataContext( New Uri(websiteUrl + "/_vti_bin/listdata.svc")) Public Sub New() InitializeComponent() End Sub
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace ProjectTracker { using ServiceReference1; using System.Net; public partial class Form1 : Form { private static string websiteUrl= "http://YourServer/sites/YourSiteCollection/YourSite"; MyWebsiteDataContext context = new MyWebsiteDataContext( new Uri(websiteUrl + "/_vti_bin/listdata.svc")); public Form1() { InitializeComponent(); }
Dans l’événement Form1_Load, configurez l’authentification de la demande. Ajoutez une instruction using pour importer l’espace de noms System.Net. L’authentification Windows intégrée vous permet d’utiliser les informations d’identification par défaut du cache d’informations d’identification. En outre, dans l’événement Form1_Load, remplissez la source de données précédemment générée par Visual Studio pour le contrôle DataGridView Projects en utilisant la classe de contexte de données, comme suit.
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load context.Credentials = CredentialCache.DefaultCredentials ProjectsBindingSource.DataSource = context.Projects End Sub
private void Form1_Load(object sender, EventArgs e) { context.Credentials = CredentialCache.DefaultCredentials; projectsBindingSource.DataSource = context.Projects; }
Pour remplir le contrôle DataGridView Employees avec des données de liste, créez un gestionnaire pour l’événement CurrentChanged dans la source de données Projects. Lorsque l’utilisateur sélectionne un projet dans le contrôle DataGridView Projects, le contrôle DataGridView Employees est rempli avec une liste d’employés filtrée en fonction du projet sélectionné. Pour ajouter l’événement CurrentChanged en mode Création, vous pouvez cliquer avec le bouton droit sur projectsBindingSource sous le formulaire, cliquer sur Propriétés, cliquer sur l’icône des événements dans la fenêtre Propriétés et double-cliquer sur l’événement CurrentChanged.
Utilisez une requête LINQ (Language Integrated Query) pour filtrer les employés dont l’identificateur de projet (ID) correspond à l’ID du projet actuellement sélectionné. Vous pouvez obtenir le projet actuellement sélectionné en utilisant la propriété Current de source de données de projet et en effectuant un cast de l’élément actuel comme type ProjectsItem, comme suit.
Private Sub ProjectsBindingSource_CurrentChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ProjectsBindingSource.CurrentChanged EmployeesBindingSource.DataSource = From emp In context.Employees _ Where emp.Project.Id = DirectCast(ProjectsBindingSource.Current, ProjectsItem).Id _ Select emp End Sub
private void projectsBindingSource_CurrentChanged(object sender, EventArgs e) { employeesBindingSource.DataSource = from emp in context.Employees where emp.Project.Id == ((ProjectsItem)projectsBindingSource.Current).Id select emp; }
Notez que l’exemple utilise la propriété de navigation Project de la liste Projects qui est mappée à partir de la colonne de recherche Project de la liste Employees.
Pour ajouter la prise en charge des mises à jour afin que les modifications apportées par les utilisateurs aux données du formulaire se répercutent sur les données du site Web, activez le bouton Enregistrer en mode Création en cliquant avec le bouton droit sur l’icône Enregistrer dans le menu Form1, puis en cliquant sur Activé. Double-cliquez sur le bouton Enregistrer pour afficher le code et insérer un gestionnaire d’événements projectsBindingNavigatorSaveItem_Click. Ajoutez la ligne de code suivante pour indiquer à ADO.NET Data Services d’enregistrer les modifications sur le site Web.
Private Sub ProjectsBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ProjectsBindingNavigatorSaveItem.Click context.SaveChanges() End Sub
private void projectsBindingNavigatorSaveItem_Click(object sender, EventArgs e) { context.SaveChanges(); }
Étant donné que vous créez une application Windows Forms, vous devez ajouter du code qui fournit au contexte de données des instructions relatives aux objets qui sont modifiés. Pour ajouter un événement CurrentItemChanged, cliquez avec le bouton droit sur projectBindingSource en mode Création, cliquez sur Propriétés, cliquez sur l’icône des événements dans la fenêtre Propriétés et double-cliquez sur l’événement CurrentItemChanged pour insérer le gestionnaire dans Form1.cs. Utilisez la méthode UpdateObject(Object) du contexte de données ADO.NET dans ce gestionnaire et utilisez la propriété Current pour indiquer la propriété qui a été modifiée, comme suit.
Private Sub ProjectsBindingSource_CurrentItemChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ProjectsBindingSource.CurrentItemChanged context.UpdateObject(ProjectsBindingSource.Current) End Sub End Class
private void projectsBindingSource_CurrentItemChanged(object sender, EventArgs e) { context.UpdateObject(projectsBindingSource.Current); } }}
Pour tester le formulaire, appuyez sur la touche F5 et apportez des modifications à un élément dans le contrôle DataGridView Projects. Lorsque vous cliquez sur le bouton Enregistrer, les modifications que vous avez apportées sont propagées au site Web.
Notes
Avant de cliquer sur le bouton Enregistrer, vous devez peut-être cliquer en dehors de la cellule dans laquelle vous apportez les modifications pour constater que celles-ci prennent effet.
Pour obtenir l’exemple de code Form1 complet, voir Exemple Form1 WCF SharePoint Foundation complet.
Voir aussi
Concepts
Implémentation de l’interface REST SharePoint Foundation
Effectuer des requêtes sur SharePoint Foundation avec ADO.NET Data Services