Créer un complément hébergé par un fournisseur comportant un type personnalisé de liste et de contenu SharePoint
Créez un complément SharePoint qui combine une application web hébergée sur le cloud avec des instances de liste, des types de contenu personnalisés et des modèles de liste personnalisés hébergés sur SharePoint à l’aide des outils de développement Office pour Visual Studio. Apprenez à interagir avec les sites web de compléments SharePoint à l’aide du service web REST/OData et à mettre en œuvre OAuth dans un complément SharePoint.
La plupart des composants SharePoint standard, tels que les types de contenu personnalisés, les définitions de liste personnalisées et les flux de travail, peuvent être inclus dans un complément SharePoint hébergé sur le cloud. L’exemple simple présenté dans cet article contient les éléments suivants :
Un site web de complément avec :
des colonnes de site personnalisées
un type de contenu personnalisé qui utilise les colonnes personnalisées
un modèle de liste personnalisé qui utilise le type de contenu personnalisé
une instance de liste basée sur la définition de liste personnalisée
Une application web ASP.NET qui lit les données à partir de l’instance de liste
Conditions requises pour créer ce complément SharePoint
Visual Studio includes the Microsoft Office Developer Tools for Visual Studio, but sometimes a version of the tools is released between updates of Visual Studio. To be sure that you have the latest version of the tools, run the installer for Office Developer Tools for Visual Studio 2013 or the installer for Office Developer Tools for Visual Studio 2015.
Installation de SharePoint pour les tests et le débogage
Cette installation peut se trouver sur l’ordinateur de développement ou vous pouvez procéder au développement avec une installation SharePoint distante. Si vous utilisez une installation distante, vous devez installer le composant redistribuable du modèle objet client sur l’installation cible. Il est disponible sous la forme d’un package redistribuable dans le Centre de téléchargement Microsoft. Recherchez « SharePoint Server 2013 Client Components SDK » ou « SharePoint Online Client Components SDK ».
Le site web SharePoint de test doit être créé à partir de la définition de site Site du développeur (que vous pouvez créer dans l’Administration centrale).
Votre application web distante communique avec le site web de complément à l’aide de JavaScript et de la bibliothèque inter-domaines ou avec OAuth. Si vous utilisez OAuth, qui fait l’objet de l’exemple de cet article, l’installation SharePoint doit être configurée pour utiliser OAuth.
Notes
Pour savoir comment configurer un environnement de développement adapté à vos besoins, consultez la section relative aux deux types de compléments SharePoint : hébergés par SharePoint et hébergés par un fournisseur.
Concepts fondamentaux à connaître pour créer un complément
Avant de créer votre premier complément, vous devez comprendre ce que sont les compléments SharePoint et connaître les différences entre des compléments SharePoint hébergés par un fournisseur et les mêmes compléments hébergés sur SharePoint. Les articles présentés dans le tableau suivant vous aideront à acquérir ces connaissances.
| Titre d’article | Description |
|---|---|
| Compléments | Découvrez le nouveau modèle de complément de SharePoint qui permet de créer des compléments, c’est-à-dire de petites solutions simples d’utilisation pour les utilisateurs finaux. |
| Aspects importants du contexte de développement et de l’architecture des compléments SharePoint | Découvrez des aspects de l'architecture des Compléments SharePoint et du modèle de complément SharePoint, notamment les options d'hébergement des compléments, les options d'interface utilisateur (IU), le système de déploiement, le système de sécurité et le cycle de vie. |
| Choisir les motifs pour le développement et l’hébergement de votre complément SharePoint | Découvrez les différentes méthodes d’hébergement pour les compléments SharePoint. |
Développement du complément SharePoint
Dans les procédures de cette section, vous créez un Complément SharePoint qui comprend un site web de complément avec des composants SharePoint et une application web distante sur l'ordinateur de développement.
Configuration de la solution Visual Studio et de ses éléments
Dans Visual Studio, créez un projet Complément pour SharePoint à partir du nœud Office SharePoint | Compléments (en C# ou en Visual Basic) dans l’arborescence de modèles de l’Assistant Nouveau projet. Sélectionnez l’option d’hébergement Hébergement par le fournisseur. Dans l’exemple utilisé dans cet article, le langage C# est utilisé et le projet est nommé LocalTheater.
Dans l’Assistant, sélectionnez Terminer.
Ouvrez le fichier AppManifest.xml dans le concepteur de manifeste. L'élément Title a le nom du projet comme valeur par défaut. Remplacez-le par un nom plus convivial, car il s'agit du nom du complément qui sera visible par les utilisateurs dans l'interface utilisateur.
Spécifiez un Nom pour le complément. Il s’agit du nom interne qui doit contenir uniquement des caractères ASCII sans espace (LocalTheater, par exemple).
Ouvrez le fichier web.config dans le projet d’application web, puis ajoutez
<customErrors mode="Off"/>à l’élément system.web.Vérifiez que les références aux assemblys suivants figurent dans le projet d’application web. Si votre édition de Visual Studio n’a pas ajouté les références automatiquement, faites-le maintenant.
Microsoft.IdentityModel.dll. Cet assembly est installé dans le cache global d’assemblys avec Windows Identity Foundation (WIF). Comme il s’agit d’un assembly .NET Framework 3.5, il est filtré en dehors du nœud Framework de la boîte de dialogue Ajouter une référence par défaut. Vous pouvez ajouter une référence à cet assembly en accédant directement au répertoire
C:\Program Files\Reference Assemblies\Microsoft\Windows Identity Foundation\v3.5de votre ordinateur de développement.Microsoft.IdentityModel.Extensions.dll. Vous pouvez ajouter une référence à cet assembly en accédant directement au dossier
C:\Program Files\Reference Assemblies\Microsoft\Microsoft Identity Extensions\1.0de votre ordinateur de développement.System.IdentityModel.dll. Cet assembly fait partie de .NET Framework 4. Il apparaît dans le nœud Assemblys | Framework de la boîte de dialogue Ajouter une référence.
Si votre application web distante accède à des informations du site web hôte ainsi que du site web de complément, vous devez ajouter un élément AppPermissionRequests avec un ou plusieurs enfants AppPermissionRequest au fichier AppManifest.xml. (L’application web de l’exemple fourni dans cet article accède uniquement au site web du complément. Les principaux des compléments bénéficient automatiquement de toutes les autorisations requises pour accéder au site web de complément et le fichier AppManifest.xml de l’exemple n’a pas d’élément AppPermissionRequests.) Pour plus d’informations sur les demandes d’autorisation des compléments et sur leurs méthodes d’ajout, consultez l’article sur les autorisations des compléments dans SharePoint.
Ajout des composants SharePoint
Vous ajoutez des composants SharePoint à un complément de la même façon que si vous les ajoutiez à une solution de batterie de serveurs classique. Toutefois, certains types de composants SharePoint ne peuvent pas être inclus dans un complément SharePoint. Les fonctions réalisées par ces composants sont accomplies d’autres manières dans les compléments SharePoint.
Pour plus d’informations sur les types de composants qui peuvent être inclus dans un complément SharePoint et sur la manière de les inclure dans un projet, reportez-vous à la rubrique Types de composants SharePoint pouvant figurer dans un complément SharePoint.
Pour les besoins de cet exemple, suivez les procédures ci-après, qui indiquent comment utiliser Visual Studio pour ajouter des colonnes, des types de contenu et des modèles de liste personnalisés, ainsi que des instances de liste à un complément SharePoint.
Création de types de colonnes personnalisés
Dans l’Explorateur de solutions, ajoutez un élément Colonne de site SharePoint portant le nom Actor au projet Complément SharePoint.
Dans le fichier elements.xml de la nouvelle colonne de site, modifiez l’élément Field de manière à ce qu’il possède les attributs et les valeurs de l’exemple suivant. Toutefois, ne modifiez pas le GUID de l’attribut ID ; conservez la valeur générée par Visual Studio. N’oubliez pas les accolades « {} ».
<Field ID="{generated GUID}"
Name="Actor"
Title="Actor"
DisplayName="Actor/Actress"
Group="Theater and Movies"
Description="The person cast, perhaps tentatively, in the role"
Type="Text"
/>
Ajoutez une autre colonne de site appelée CastingStatus au projet.
Dans le fichier elements.xml de la nouvelle colonne de site, modifiez l’élément Field pour qu’il possède les attributs et valeurs de l’exemple suivant. Vous ne devez toutefois pas changer le GUID de l’attribut ID ; conservez la valeur Visual Studio générée pour celui-ci.
<Field ID="{generated GUID}"
Name="CastingStatus"
Title="CastingStatus"
DisplayName="Casting Status"
Group="Theater and Movies"
Description="The current casting status of the role"
Type="Choice">
</Field>
- Comme il s'agit d'un champ de choix, vous devez spécifier les choix possibles, l'ordre dans lequel ils doivent apparaître dans la liste déroulante lorsqu'un utilisateur effectue une sélection et le choix par défaut. Ajoutez le balisage enfant suivant à l'élément Field.
<CHOICES>
<CHOICE>Not Started</CHOICE>
<CHOICE>Audition Scheduled</CHOICE>
<CHOICE>Auditioned</CHOICE>
<CHOICE>Role Offered</CHOICE>
<CHOICE>Committed to Role</CHOICE>
</CHOICES>
<MAPPINGS>
<MAPPING Value="1">Not Started</MAPPING>
<MAPPING Value="2">Audition Scheduled</MAPPING>
<MAPPING Value="3">Auditioned</MAPPING>
<MAPPING Value="4">Role Offered</MAPPING>
<MAPPING Value="5">Committed to Role</MAPPING>
</MAPPINGS>
<Default>Not Started</Default>
Création du type de contenu personnalisé
Dans l’Explorateur de solutions, ajoutez un élément Type de contenu SharePoint portant le nom ActingRole au projet Complément SharePoint. Quand l’Assistant vous invite à sélectionner le type de contenu de base, sélectionnez Élément, puis Terminer.
Si le concepteur de type de contenu ne s’ouvre pas automatiquement, sélectionnez le type de contenu ActingRole dans l’Explorateur de solutions pour l’ouvrir.
Cliquez sur l’onglet Type de contenu du concepteur, puis remplissez les zones de texte de la manière suivante :
Nom du type de contenu : ActingRole
Description : Represents a role in a play or movie (Représente un rôle dans une pièce de théâtre ou un film).
Nom du groupe : Theater and Movies
Vérifiez qu’aucune des cases à cocher de l’onglet n’est activée. La case à cocher Hériter des colonnes du type de contenu parent peut être activée par défaut. Veillez à la désactiver.
Cliquez sur l’onglet Colonnes du concepteur.
Utilisez la grille pour ajouter les deux colonnes de site au type de contenu. Elles sont répertoriées dans la liste déroulante par leur nom d’affichage : Actor/Actress et Casting Status. (Si elles n’apparaissent pas, vous n’avez peut-être pas enregistré le projet depuis l’ajout des colonnes de site personnalisées. Cliquez sur Enregistrer tout).
Enregistrez le fichier, puis fermez le concepteur.
À l’étape suivante, vous devez utiliser directement le code XML brut pour le type de contenu. Dans l’Explorateur de solutions, sélectionnez donc l’enfant du fichier elements.xml du type de contenu ActingRole.
Des éléments FieldRef existent déjà dans le fichier pour les deux colonnes que vous avez ajoutées. Ajoutez des éléments FieldRef pour deux colonnes SharePoint intégrées comme paires des deux qui figurent déjà dans le fichier. Le code suivant correspond au balisage pour les éléments. Vous devez utiliser ces mêmes GUID pour l'attribut d'ID, car ce sont des types de champs intégrés avec des ID fixes. Ajoutez-les au-dessus des deux éléments FieldRef pour les colonnes de site personnalisées.
<FieldRef Name="LinkTitle" ID="{82642ec8-ef9b-478f-acf9-31f7d45fbc31}" DisplayName="Character" />
<FieldRef Name="Title" ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" DisplayName="Character" />
Notez que le nom d’affichage personnalisé suivant a été donné à ces champs : Character.
Création du modèle de liste personnalisé et une instance de liste
Ajoutez un élément SharePoint Liste au projet Complément SharePoint avec le nom CharactersInShow. Dans la page Choisir les paramètres de liste de l’Assistant Personnalisation de SharePoint, conservez le nom d’affichage CharactersInShow comme valeur par défaut, sélectionnez l’option Créer une liste personnalisable basée sur, puis sélectionnez Par défaut (vide) dans la liste déroulante. Sélectionnez Terminer.
Une fois l'exécution de l'Assistant terminée, un modèle de liste CharactersInShow est créé avec une instance de liste enfant appelée CharactersInShowInstance (InstancePersonnagesSpectacle). Un concepteur de liste l'a peut-être ouvert par défaut. Elle sera utilisée ultérieurement.
Ouvrez l’enfant du fichier elements.xml du modèle de liste CharactersInShow (et non l’enfant du fichier elements.xml de CharactersInShowInstance).
Ajoutez des espaces à l’attribut DisplayName pour le rendre plus convivial : Characters In Show.
Définissez l’attribut Description sur The characters in a play or movie.
Conservez les valeurs par défaut de tous les autres attributs, enregistrez le fichier, puis fermez-le.
Si le concepteur de liste n’est pas ouvert, sélectionnez le nœud CharactersInShow dans l’Explorateur de solutions.
Cliquez sur l’onglet Colonnes du concepteur, puis sélectionnez le bouton Types de contenu.
Dans la boîte de dialogue Paramètres de type de contenu, ajoutez le type de contenu ActingRole.
Sélectionnez le type de contenu ActingRole dans la liste des types, puis sélectionnez le bouton Définir par défaut.
Sélectionnez le type de contenu Élément, cliquez avec le bouton droit sur la petite pointe de flèche qui apparaît à gauche du nom du type de contenu, puis sélectionnez Supprimer.
Répétez l’étape précédente pour le type de contenu Folder, pour que ActingRole soit le seul type de contenu répertorié. Sélectionnez OK pour fermer la boîte de dialogue.
Trois colonnes figurent désormais dans la liste des colonnes. Sélectionnez Titre, cliquez avec le bouton droit sur la petite pointe de flèche qui apparaît à gauche du nom du type de contenu, puis sélectionnez Supprimer. Seules deux colonnes doivent maintenant apparaître, Actor/Actress et Casting Status.
Cliquez sur l’onglet Liste du concepteur. Cet onglet est utilisé pour définir certaines valeurs pour l’instance de liste et non le modèle de liste.
Remplacez les valeurs de cet onglet par celles-ci :
Titre : Characters in Hamlet (Personnages dans Hamlet)
URL de la liste : Lists/CharactersInHamlet (Listes/PersonnagesDansHamlet)
Description : The characters in Hamlet and casting information (Personnages dans Hamlet et informations sur le casting).
Conservez l’état par défaut des cases à cocher, enregistrez le fichier, puis fermez le concepteur.
L’instance de liste peut avoir son ancien nom dans l’Explorateur de solutions. Si c’est le cas, ouvrez le menu contextuel de CharactersInShowInstance, sélectionnez Renommer, puis remplacez le nom par CharactersInHamlet.
Ouvrez le fichier schema.xml.
Le fichier peut contenir deux éléments ContentType : un avec une valeur d’attribut Name de ActingRole et un autre appelé ListFieldsContentType. Seul l’élément appelé ActingRole doit être conservé (supprimez les autres éléments ContentType).
Notes
Des sauts de ligne ne séparent peut-être pas les éléments ContentType. Il semble dans ce cas qu’il n’y en ait qu’un. Faites défiler le fichier vers la droite pour en rechercher d’autres.
L’élément Fields doit posséder deux éléments Field (qui se trouvent sur une seule ligne s’il n’existe pas de saut de ligne). Un élément doit dupliquer exactement l’élément Field dans le fichier elements.xml de la colonne de site Actor. L’autre élément doit dupliquer exactement l’élément Field du fichier elements.xml de la colonne de site CastingStatus. S’il n’y a pas de correspondance exacte, y compris tous les éléments enfants (comme les éléments CHOICES et MAPPINGS), copiez l’élément Field dans le fichier elements.xml de la colonne de site et collez-le à la place de l’élément Field qui ne correspond pas dans le fichier schema.xml.
Dans le fichier schema.xml, dans l'élément View dont la valeur BaseViewID est définie sur 0, remplacez l'élément ViewFields existant par le balisage ci-après. (Utilisez précisément ce GUID pour le FieldRef appelé
LinkTitle.)
<ViewFields>
<FieldRef Name="Title" ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" DisplayName="Character" />
<FieldRef Name="Actor" ID="{GUID from the site column elements.xml}" />
<FieldRef Name="CastingStatus" ID="{GUID from the site column elements.xml}" />
</ViewFields>
Remplacez les deux valeurs d’attribut d’ID manquantes par les GUID dans les fichiers elements.xml des colonnes de site respectives. N’oubliez pas d’utiliser des accolades « {} ».
Dans le fichier schema.xml, dans l'élément View dont la valeur BaseViewID est définie sur 1, remplacez l'élément ViewFields existant par le code ci-dessous. (Utilisez précisément ce GUID pour le FieldRef appelé
LinkTitle.)
<ViewFields>
<FieldRef Name="LinkTitle" ID="{82642ec8-ef9b-478f-acf9-31f7d45fbc31}" DisplayName="Character" />
</ViewFields>
Copiez les deux éléments FieldRef pour
ActoretCastingStatusque vous avez ajoutés à l'affichage précédent de cet élément ViewFields comme frères deLinkTitleFieldRef.Enregistrez le fichier schema.xml, puis fermez-le.
Ouvrez le fichier elements.xml qui est un enfant de l'instance de liste CharactersInHamlet.
Remplissez la liste avec quelques données initiales en ajoutant le balisage ci-après comme enfant de l’élément ListInstance.
<Data>
<Rows>
<Row>
<Field Name="Title">Hamlet</Field>
<Field Name="Actor">Tom Higginbotham</Field>
<Field Name="CastingStatus">Committed to Role</Field>
</Row>
<Row>
<Field Name="Title">Claudius</Field>
<Field Name="Actor"></Field>
<Field Name="CastingStatus">Not Started</Field>
</Row>
<Row>
<Field Name="Title">Gertrude</Field>
<Field Name="Actor">Satomi Hayakawa</Field>
<Field Name="CastingStatus">Auditioned</Field>
</Row>
<Row>
<Field Name="Title">Ophelia</Field>
<Field Name="Actor">Cassi Hicks</Field>
<Field Name="CastingStatus">Committed to Role</Field>
</Row>
<Row>
<Field Name="Title">The ghost</Field>
<Field Name="Actor">Lertchai Treetawatchaiwong</Field>
<Field Name="CastingStatus">Role Offered</Field>
</Row>
</Rows>
</Data>
Dans l’Explorateur de solutions, sélectionnez Fonctionnalité1 pour ouvrir le concepteur de fonctionnalité. Dans le concepteur, définissez le titre sur Theater and Movie Data Components et la description sur Site columns, content types, and list instances for data about theater and movies.. Enregistrez le fichier, puis fermez le concepteur.
Dans l’Explorateur de solutions, si l’option Feature1 n’a pas été renommée, ouvrez son menu contextuel, sélectionnez Renommer, puis attribuez le nom TheaterAndMovieDataComponents.
Écriture du code du projet d’application web distante
Développez l’application web comme vous le feriez pour n’importe quelle autre application web destinée à votre pile de plateformes préférée. Pour une pile Microsoft, vous pouvez utiliser le service web REST/OData ou un des modèles objet client de SharePoint. Pour une pile autre que Microsoft, vous pouvez avoir recours aux points de terminaison REST/OData de SharePoint pour effectuer des opérations CRUD (create/read/update/delete ; créer/lire/mettre à jour/supprimer) sur les données du site web de complément.
Notes
Quand vous ajoutez une référence à un assembly au projet de l’application web dans Visual Studio, définissez la propriété Copie locale de l’assembly sur True, sauf si vous savez que l’assembly est déjà installé sur le serveur web ou qu’il sera installé avant le déploiement de votre complément. .NET Framework est installé sur les rôles web Microsoft Azure et les sites web Azure. Toutefois, les assemblys clients SharePoint et les différentes extensions de code managé et instances Microsoft Foundation ne sont pas installés. Les outils de développement Office pour Visual Studio ajoutent automatiquement les références à certains assemblys fréquemment utilisés dans les compléments SharePoint et définissent la propriété Copie locale.
Pour l’exemple de cet article, vous devez développer une application web ASP.NET. Suivez la procédure ci-après.
- Ouvrez le fichier Default.aspx et remplacez l'élément body du fichier par le balisage ci-après. Il ajoute un bouton Get the Cast (Obtenir le casting) qui, lorsque vous cliquez dessus, lit la liste Characters in Hamlet (Personnages d'Hamlet) qui figure sur le site web de complément, puis présente les données dans un contrôle GridView qui s'affiche que lorsque vous appuyez sur le bouton.
<body >
<form id="form1" runat="server">
<div>
<h2>Local Theater</h2>
</div>
<asp:Literal ID="Literal1" runat="server"><br /><br /></asp:Literal>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Get the Cast"/>
<asp:Literal ID="Literal2" runat="server"><br /><br /></asp:Literal>
<asp:GridView ID="GridView1" runat="server" Caption="The Cast" ></asp:GridView>
</form>
</body>
- Ouvrez le fichier Default.aspx.cs, puis ajoutez-y les instructions using ci-dessous.
using Microsoft.SharePoint.Client;
using Microsoft.IdentityModel.S2S.Tokens;
using System.Net;
using System.IO;
using System.Xml;
using System.Data;
using System.Xml.Linq;
using System.Xml.XPath;
using Microsoft.SharePoint.Samples;
La dernière de ces instructions fait référence à l’espace de noms déclaré dans le fichier TokenHelper.cs.
3. Ajoutez les champs ci-dessous à la classe **Default**. ```csharp SharePointContextToken contextToken; string accessToken; Uri sharepointUrl; ```
- Remplacez la méthode Page_Load par le code suivant qui utilise la classe TokenHelper pour obtenir des jetons du serveur de jetons sécurisés compatibles OAuth. Le jeton d'accès est ensuite stocké dans la propriété CommandArgument du bouton pour une récupération ultérieure par le gestionnaire d'événements Click du bouton.
protected void Page_Load(object sender, EventArgs e)
{
TokenHelper.TrustAllCertificates();
string contextTokenString = TokenHelper.GetContextTokenFromRequest(Request);
if (contextTokenString != null)
{
// Get context token
contextToken = TokenHelper.ReadAndValidateContextToken(contextTokenString, Request.Url.Authority);
// Get access token
sharepointUrl = new Uri(Request.QueryString["SPAppWebUrl"]);
accessToken = TokenHelper.GetAccessToken(contextToken, sharepointUrl.Authority).AccessToken;
// Pass the access token to the button event handler.
Button1.CommandArgument = accessToken;
}
}
- Ajoutez le gestionnaire d'événements ci-dessous à la classe Default. Le gestionnaire commence à récupérer le jeton d'accès qui a été stocké dans la propriété CommandArgument du bouton.
protected void Button1_Click(object sender, EventArgs e)
{
// Retrieve the access token that the Page_Load method stored
// in the button's command argument.
string accessToken = ((Button)sender).CommandArgument;
}
- Comme le gestionnaire doit obtenir de nouveau l’URL du site web de complément au moment des publications (postback), ajoutez le code ci-après.
if (IsPostBack)
{
sharepointUrl = new Uri(Request.QueryString["SPAppWebUrl"]);
}
- Ajoutez la ligne suivante qui utilise l’un des points de terminaison REST/OData SharePoint pour obtenir des données de liste. Dans cet exemple, le code lit la liste Characters in Hamlet déployée sur le site web de complément. Les API de ce service permettent, en une seule ligne de code, de sélectionner facilement une liste et de spécifier trois champs de la liste à renvoyer.
Notez que dans l’URL OData, vous devez utiliser les noms internes des champs (colonnes) plutôt que leurs noms d’affichage ; le code utilise donc Title, Actor, et CastingStatus plutôt que Character, Actor/Actress, et Casting Status. Pour obtenir plus d’informations sur le service REST/OData, reportez-vous à la rubrique Utiliser les opérations de requête OData dans les demandes REST SharePoint.
// REST/OData URL section
string oDataUrl = "/_api/Web/lists/getbytitle('Characters In Hamlet')/items?$select=Title,Actor,CastingStatus";
- Ajoutez le code suivant qui utilise les classes HttpWebRequest et HttpWebResponse de l’espace de noms System.Net pour créer les objets de demande et de réponse HTTP.
// HTTP Request and Response construction section
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(sharepointUrl.ToString() + oDataUrl);
request.Method = "GET";
request.Accept = "application/atom+xml";
request.ContentType = "application/atom+xml;type=entry";
request.Headers.Add("Authorization", "Bearer " + accessToken);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
- Ajoutez le code suivant pour analyser le fichier XML de réponse au format ATOM. Celui-ci utilise les classes de l’espace de noms System.Xml.Linq pour analyser les données renvoyées et construire une liste des éléments à partir de la liste SharePoint. (Vous pouvez aussi utiliser les classes de l’espace de noms System.Xml.)
Notez que, dans le fichier XML renvoyé par SharePoint, les éléments enfants de l’élément entry contiennent des métadonnées relatives à l’élément de liste. Les données de ligne effectives d’un élément de liste SharePoint sont imbriquées deux couches plus bas, dans l’élément properties. Pour cette raison la méthode d’extension Elements est utilisée deux fois pour filtrer les niveaux supérieurs.
// Response markup parsing section
XDocument oDataXML = XDocument.Load(response.GetResponseStream(), LoadOptions.None);
XNamespace atom = "http://www.w3.org/2005/Atom";
XNamespace d = "http://schemas.microsoft.com/ado/2007/08/dataservices";
XNamespace m = "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata";
List<XElement> entries = oDataXML.Descendants(atom + "entry")
.Elements(atom + "content")
.Elements(m + "properties")
.ToList();
- Ajoutez la requête LINQ suivante pour créer une collection IEnumerable de type anonyme qui contient uniquement les propriétés dont avez besoin et aucune autre. Notez que même si le code doit faire référence au champ de titre de l’élément par son nom interne
Title, la propriété dans le type anonyme, à laquelle la valeur est attribuée, peut être nomméeCharacter. Ceci a notamment pour effet que lorsque la collection est liée à un contrôle de grille, le nom plus approprié Character apparaît sur la page.
var entryFieldValues = from entry in entries
select new { Character=entry.Element(d + "Title").Value,
Actor=entry.Element(d + "Actor").Value,
CastingStatus=entry.Element(d + "CastingStatus").Value };
- Terminez le gestionnaire avec le code suivant pour lier les données à un contrôle GridView sur la page. Les en-têtes de colonne de la grille prennent par défaut les noms de propriété du type anonyme :
Character,ActoretCastingStatus. Le contrôle GridView possède des propriétés qui vous permettent de contrôler les en-têtes des colonnes de nom et de format, et vous pouvez ainsi faire correspondre Actor/Actress et Casting Status aux en-têtes de colonne de SharePoint. À des fins de simplification, ces techniques ne sont pas décrites ici. (Vous pouvez également utiliser un contrôle DataGrid.)
GridView1.DataSource = entryFieldValues;
GridView1.DataBind();
- Enregistrez tous les fichiers.
Test et débogage du complément SharePoint
Pour tester le complément SharePoint et son application web distante, sélectionnez la touche F5 dans Visual Studio. L’application web est déployée sur IIS Express sur localhost. Le complément SharePoint est installé sur le site web SharePoint cible. (Dans l’exemple, le complément distant ne tente pas d’interagir avec le site web hôte, et le principal du complément dispose automatiquement des autorisations sur le site web de complément, de sorte que vous ne soyez pas invité à accorder des autorisations.) La page Contenu du site du site web SharePoint cible s’ouvre ; le nouveau complément y est répertorié.
Sélectionnez le complément SharePoint. L’application web distante s’ouvre à la page que vous avez spécifiée dans l’élément StartPage dans le fichier AppManifest.xml. Utilisez l’application web selon vos besoins pour vérifier qu’elle fonctionne. Dans l’exemple fourni dans cette rubrique, sélectionnez simplement le bouton. Cette opération crée une grille et la renseigne avec la liste Characters in Hamlet du site web de complément.
Publier le complément SharePoint
Pour publier votre complément SharePoint, chargez le package de complément dans un catalogue de compléments d’entreprise ou dans le magasin de compléments Office. Pour plus d’informations, reportez-vous aux rubriques Publier sur Office Store ou le catalogue de compléments d’une organisation et Publier des compléments SharePoint.
Résolution des problèmes
Si le complément ne fonctionne pas, vous devez vérifier si une erreur dans la balise CAML bloque le déploiement des composants SharePoint. Pour vérifier le déploiement, suivez une procédure similaire à celle qui suit, utilisée pour l’exemple de cet article.
Pour tester la mise en service du site web de complément
Ouvrez la page Paramètres du site du site web hôte. Dans la section Administration de la collection de sites, sélectionnez le lien Hiérarchies des sites.
Dans la page Hiérarchie de site, le complément est répertorié par son URL. Ne le lancez pas. Copiez plutôt l'URL et utilisez-la dans les étapes restantes.
Accédez à URL_of_app_web/_layouts/15/ManageFeatures.aspx, puis, sur la page Fonctionnalités du site qui s’ouvre, vérifiez que la fonctionnalité Composants de données Theater and Movie se trouve dans la liste alphabétique des fonctionnalités de votre complément SharePoint et que son état est Actif.
Naviguez vers URL_sous_site_web_application/_layouts/15/mngfield.aspx, puis, dans la page Colonnes de site qui s’ouvre, vérifiez que le groupe Theater and Movies se trouve dans la liste des colonnes de site et qu’il contient les nouvelles colonnes de site personnalisées Actor/Actress et Casting Status.
Naviguez vers URL_sous_site_web_application/_layouts/15/mngctype.aspx, puis, dans la page Types de contenu de site qui s’ouvre, vérifiez que le groupe Theater and Movies se trouve dans la liste des types de contenu et qu’il contient votre nouveau type de contenu ActingRole.
Sélectionnez le lien vers le type de contenu ActingRole. Dans la page Types de contenu de site qui s’ouvre, vérifiez que le type de contenu comporte les deux nouveaux types de colonnes de site Actor/Actress et Casting Status. Vérifiez également que le champ de titre de l’élément porte le nom d’affichage personnalisé suivant : Character.
Naviguez vers URL_sous_site_web_application/_layouts/15/mcontent.aspx, puis, dans la page Bibliothèques et listes du site qui s’ouvre, vérifiez qu’il existe un lien Personnaliser « Characters in Hamlet ».
Sélectionnez le lien Personnaliser « Characters in Hamlet », puis, dans la page des paramètres de la liste, vérifiez que le seul type de contenu de la liste est votre type de contenu ActingRole personnalisé. Vérifiez également que les deux nouvelles colonnes de sites Actor/Actress et Casting Status sont répertoriées dans la section Colonnes. (la colonne Titre peut apparaître sous le nom interne Titre au lieu du nom d’affichage Character que vous lui avez attribué).
Notes
S’il n’existe aucune section Types de contenu dans la page, vous devez activer la gestion des types de contenu. Sélectionnez le lien Paramètres avancés, puis dans la page Paramètres avancés, activez la gestion des types de contenu et cliquez sur OK. Vous êtes renvoyé vers la page précédente où vous voyez désormais une section Types de contenu comportant une liste.
- Dans la partie supérieure de la page se trouve l’Adresse web de la liste. Copiez-la et collez-la dans la barre d’adresses de votre navigateur, puis accédez à la liste. Vérifiez que la liste comporte les exemples d’éléments que vous avez créés. (La colonne Titre peut apparaître sous le nom interne Titre au lieu du nom d’affichage Caractère que vous lui avez attribué.)
Voir aussi
- Effectuer des opérations de base avec du code de bibliothèque client dans SharePoint
- Créer des applications Windows Phone accédant à SharePoint
- Commencer à créer des compléments hébergés par un fournisseur pour SharePoint
- Commencer à créer des compléments SharePoint hébergés par SharePoint
- Localiser les compléments pour SharePoint
- Développer des compléments pour SharePoint