Procédure pas à pas : remplissage d’un contrôle de grille avec des données issues d’une requête LINQ
Dernière modification : jeudi 3 mars 2011
S’applique à : SharePoint Foundation 2010
Cette procédure pas à pas illustre comment utiliser une requête LINQ to SharePoint simple pour obtenir des champs sélectionnés de données à partir de deux listes différentes. Les données sont présentées dans un composant WebPart avec un contrôle de grille. Pour une vue d’ensemble de l’interrogation avec LINQ to SharePoint, voir Procédure : effectuer des requêtes à l’aide de LINQ to SharePoint.
Conditions requises
Assurez-vous que le chemin d’accès à l’outil SPMetal fait partie de votre variable d’environnement %PATH%. Pour plus d’informations, voir Procédure : ajouter des emplacements d’outils à la variable d’environnement PATH.
Créez un site Web Microsoft SharePoint Foundation appelé Contoso. Le reste de cette procédure pas à pas, y compris le code et le balisage, suppose que ce nom est utilisé.
Créez deux listes sur le site Web, nommées Employees et Projects. Une colonne Title par défaut est automatiquement présente dans chaque liste. Ajoutez des colonnes aux listes comme indiqué dans les tableaux suivants.
Liste Employees :
Nom de la colonne
Type de colonne
Remarques
Job Title
Une seule ligne de texte
Team
Une seule ligne de texte
Project
Liste de choix
Recherche sur la colonne Title de la liste Projects.
Liste Projects :
Nom de la colonne
Type de colonne
Remarques
Description
Une seule ligne de texte
Due Date
Date et heure
Primary Contact
Liste de choix
Recherche sur la colonne Title de la liste Employees.
Remplissez les deux listes avec quelques exemples d’éléments de liste. Utilisez le champ Title de la liste Employees pour stocker un nom d’employé. Utilisez le champ Title de la liste Projects pour stocker le nom du projet. Certaines dates d’échéance de projet doivent se situer à moins de six mois, d’autres à plus de six mois, par rapport à la date du jour.
Pour configurer le projet
Dans Microsoft Visual Studio, démarrez un projet de composant WebPart en sélectionnant Composant Visual Web Part dans la section SharePoint | 2010 de la zone Modèles installés dans la boîte de dialogue Nouveau projet. Nommez le projet ProjectsWithContacts, puis cliquez sur OK. L’Assistant Personnalisation de SharePoint s’ouvre.
Spécifiez le site Contoso comme site de débogage et indiquez que vous souhaitez déployer une solution de batterie de serveurs, et non une solution en bac à sable (sandbox). Cliquez sur Terminer.
Dans l’Explorateur de solutions, cliquez sur le nœud Références, puis cliquez sur Ajouter une référence. Sous l’onglet .NET, dans la boîte de dialogue Ajouter une référence, sélectionnez Microsoft.SharePoint.Linq. (Il peut être utile de classer la liste des composants par ordre alphabétique en cliquant sur la barre Nom du composant.) Cliquez sur OK.
Cliquez avec le bouton droit sur le nom du projet dans l’Explorateur de solutions, puis sélectionnez Propriétés.
Sous l’onglet Application de la boîte de dialogue Propriétés, entrez Contoso.SharePoint.WebPartPages.ProjectsByContact comme nom de l’assembly et Contoso.SharePoint.WebPartPages en guise d’espace de noms par défaut. Laissez le paramètre Framework cible défini sur .NET Framework 3.5.
Important
Pour les projets basés sur l’un des modèles dans la section SharePoint | 2010 de la zone Modèles installés, le Framework cible par défaut est .NET Framework 3.5. Ne modifiez pas cela. La valeur par défaut de la zone Plateformes Solution du menu standardVisual Studio est « Tout processeur ». Vous avez la possibilité de modifier cette option en « x64 » avec la liste déroulante Plateforme cible, sous l’onglet Générer de la boîte de dialogue Propriétés. Pour plus d’informations sur la décision à prendre, voir Procédure : définir le Framework et l’unité centrale cibles adéquats.
Cliquez sur le bouton Enregistrer tous les fichiers de la barre d’outils.
Pour automatiser l’utilisation de l’outil SPMetal, ajoutez un fichier texte au projet sous le nom Prebuild.bat.
Ouvrez Prebuild.bat si ce n’est déjà fait. Ajoutez les lignes suivantes.
Echo Off SET SPLANGEXT=cs Echo Backing up previous version of generated code ... IF NOT EXIST .\PreviousVersionGeneratedCode MkDir .\PreviousVersionGeneratedCode IF EXIST Contoso.%SPLANGEXT% xcopy /Y/V Contoso.%SPLANGEXT% .\PreviousVersionGeneratedCode Echo Generating code ... SPMetal /web:http://MyServer/Contoso /code:Contoso.%SPLANGEXT%
Apportez les modifications suivantes au code, selon vos besoins :
- Remplacez « MyServer/Contoso » par le chemin d’accès complet du site Web Contoso.
Ce fichier de commandes enregistre la version antérieure du code généré afin que vous puissiez la comparer à la nouvelle version dans le cadre d’une opération de débogage.
Enregistrez le fichier, mais pas en cliquant sur le bouton Enregistrer ou Enregistrer tous les fichiers dans la barre d’outils ou en sélectionnant Enregistrer dans le menu Fichier. Le codage par défaut des fichiers texte dans Visual Studio n’est pas compatible avec les fichiers de commandes système. À la place, dans le menu Fichier, sélectionnez Enregistrer Prebuild.bat sous. Dans la boîte de dialogue Enregistrer le fichier sous, cliquez sur la flèche vers le bas située sur le bouton Enregistrer. Sélectionnez Enregistrer avec encodage. Dans la boîte de dialogue Options d’enregistrement avancées, dans la liste déroulante Codage, sélectionnez Unicode (UTF-8 sans signature) - Page de codes 65001, puis cliquez sur OK. Veillez à sélectionner la version « sans signature » d’UTF-8.
Conseil Si vous enregistrez le fichier en employant accidentellement une méthode inappropriée, rouvrez-le, apportez une légère modification, telle que l’ajout d’une espace, et réenregistrez-le en suivant la procédure adéquate. Cette modification est nécessaire pour que le fichier soit effectivement réenregistré.
Cliquez avec le bouton droit sur le nom de projet dans l’Explorateur de solutions. Sélectionnez Propriétés, puis ouvrez l’onglet Événements de build.
Dans la zone Ligne de commande de l’événement pré-build (et non dans la zone Ligne de commande de l’événement post-build), entrez les deux lignes suivantes.
cd $(ProjectDir) Prebuild.bat
Cliquez sur le bouton Enregistrer tout.
Dans le menu Générer, sélectionnez Générer la solution. Cette opération appelle votre fichier de commandes et, par conséquent, SPMetal. SPMetal crée un fichier Contoso.cs dans le répertoire de projet dans Windows, mais pas dans l’Explorateur de solutions. Ajoutez-le au projet en tant qu’élément existant.
Le fichier Contoso.cs est régénéré chaque fois que vous régénérez le projet. Bien que la régénération du fichier ne soit pas nécessaire pour cette procédure pas à pas, cette procédure est recommandée lorsque vous utilisez SPMetal, car elle garantit que le fichier Contoso.cs reflète les modifications apportées aux listes, l’ajout de nouvelles listes au site Web et la suppression de listes du site Web.
Pour créer le code et le marquage
Dans l’Explorateur de solutions, développez le nœud VisualWebPart1, puis ouvrez le fichier VisualWebPart1.webpart.
Définissez la valeur de la propriété Title sur « Projets classés par contact principal ».
Définissez la valeur de la propriété Description sur « Projets arrivant à échéance dans les 6 prochains mois, classés par contact principal ».
Cliquez sur le bouton Enregistrer de la barre d’outils.
Ouvrez le fichier VisualWebPart1UserControl.ascx, puis ajoutez le balisage suivant au-dessous des directives existantes.
<%@ Import Namespace="Microsoft.SharePoint.WebControls" %> <SharePoint:SPGridView id="spGridView" runat="server" AutoGenerateColumns="false"> <HeaderStyle HorizontalAlign="Left" ForeColor="Navy" Font-Bold="true" /> <Columns> <SharePoint:SPBoundField DataField="Title" HeaderText="Employee"> <headerstyle HorizontalAlign="Left" /> </SharePoint:SPBoundField> <SharePoint:SPBoundField DataField="JobTitle" HeaderText="Job Title"> <headerstyle HorizontalAlign="Left" /> </SharePoint:SPBoundField> <SharePoint:SPBoundField DataField="ProjectTitle" HeaderText="Project Title"> <headerstyle HorizontalAlign="Left" /> </SharePoint:SPBoundField> <SharePoint:SPBoundField DataField="DueDate" HeaderText="Due Date"> <headerstyle HorizontalAlign="Left" /> </SharePoint:SPBoundField> </Columns> </SharePoint:SPGridView>
Cliquez sur le bouton Enregistrer de la barre d’outils.
Dans l’Explorateur de solutions, développez le nœud VisualWebPart1UserControl.ascx, puis ouvrez le fichier code-behind VisualWebPart1UserControl.ascx.cs.
Ajouter les instructions using suivantes.
using System.Linq; using Microsoft.SharePoint; using Microsoft.SharePoint.Linq;
Remplacez la méthode Page_Load par le code suivant. Notez que les expressions emp.Project.DueDate et emp.Project.Title créent des jointures implicites entre les listes Employees et Projects. Notez aussi que la clause select spécifie uniquement les champs qui seront effectivement affichés dans le composant WebPart. Le champ Description de chaque élément de projet n’a pas besoin d’être envoyé via le réseau depuis la base de données de contenu vers le serveur Web frontal.
protected void Page_Load(object sender, EventArgs e) { using (ContosoDataContext dc = new ContosoDataContext(SPContext.Current.Web.Url)) { EntityList<EmployeesItem> Employees = dc.GetList<EmployeesItem>("Employees"); var empQuery = from emp in Employees where emp.Project.DueDate < DateTime.Now.AddMonths(6) select new { emp.Title, emp.JobTitle, ProjectTitle = emp.Project.Title, DueDate = emp.Project.DueDate.Value.ToShortDateString() }; spGridView.DataSource = empQuery; spGridView.DataBind(); } }
Cliquez sur le bouton Enregistrer de la barre d’outils.
Pour déployer et tester le composant WebPart
Dans le menu Générer, sélectionnez Déployer la solution. Le processus de déploiement effectue les opérations suivantes :
exécution de votre fichier de commandes (et, par conséquent, de SPMetal) ;
génération du projet ;
déploiement du fichier de package ProjectsWithContacts.wsp dans la galerie de solutions de la batterie de serveurs ;
déploiement de l’assembly Contoso.SharePoint.WebPartPages.ProjectsByContact.dll dans le Global Assembly Cache ;
ajout de la fonctionnalité Fonctionnalité1 ProjectsWithContacts à la galerie de Composants fonctionnels de la collection de sites ;
activation de la fonctionnalité ;
recyclage des services Internet (IIS).
Le fait de sélectionner Déployer la solution à nouveau une fois que vous avez apporté des modifications au projet retire automatiquement la version précédente de la solution et la remplace par la version la plus récente.
Accédez à une Page de composants WebPart sur le site Web, puis cliquez sur l’onglet Page du Ruban.
Cliquez sur Modifier la page, puis sur Ajouter un composant WebPart dans une zone de composant WebPart.
Dans la zone Catégories, cliquez sur le dossier Personnalisé, cliquez sur Projets classés par contact principal dans la zone Composants WebPart, puis cliquez sur Ajouter.
Cliquez sur Arrêter la modification. Vérifiez que le composant WebPart apparaît sur la page et est rempli avec les données des deux listes. Les projets qui arrivent à échéance dans plus de six mois par rapport à la date du jour ne doivent pas apparaître.
Voir aussi
Tâches
Concepts
Procédure : effectuer des requêtes à l’aide de LINQ to SharePoint
Procédure : ajouter des emplacements d’outils à la variable d’environnement PATH