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 classiques, tels que les types de contenu personnalisés, les définitions de listes 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

  • Visual Studio inclut les outils de développement Microsoft Office pour Visual Studio, mais parfois une version des outils est publiée entre les mises à jour de Visual Studio. Pour être sûr que vous avez la dernière version des outils, exécutez le programme d’installation pour les outils de développement Office pour Visual Studio 2013 ou le programme d’installation pour les outils de développement Office pour Visual Studio 2015.

  • Installation de SharePoint pour les tests et le débogage

    • Cela peut se trouver sur le même ordinateur que votre ordinateur de développement, ou vous pouvez développer 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.

    Remarque

    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

  1. 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.

  2. Dans l’Assistant, sélectionnez Terminer.

  3. 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.

  4. 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).

  5. Ouvrez le fichier web.config dans le projet d’application web, puis ajoutez <customErrors mode="Off"/> à l’élément system.web.

  6. 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.5 de 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.0 de 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.

  7. 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 dans l’exemple suivant de cet article accède uniquement au site web de complément. Les principaux de complément disposent automatiquement de toutes les autorisations nécessaires pour le site web de complément, de sorte que le AppManifest.xml dans l’exemple n’a pas d’élément AppPermissionRequests .) Pour plus d’informations sur les demandes d’autorisation de complément et sur la façon de les ajouter, voir Autorisations de complément 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

  1. Dans l’Explorateur de solutions, ajoutez un élément Colonne de site SharePoint portant le nom Actor au projet Complément SharePoint.

  2. 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" 
    />
  1. Ajoutez une autre colonne de site appelée CastingStatus au projet.

  2. 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>
  1. 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é

  1. 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.

  2. 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.

  3. 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

  4. Vérifiez qu’aucune case de l’onglet n’est cochée. La case Hérite des colonnes du type de contenu parent peut être cochée par défaut. Veillez à la désactiver.

  5. Cliquez sur l’onglet Colonnes du concepteur.

  6. 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. (S’ils ne sont pas répertoriés, vous n’avez peut-être pas enregistré le projet depuis l’ajout des colonnes de site personnalisées. Sélectionnez Enregistrer tout).

  7. Enregistrez le fichier, puis fermez le concepteur.

  8. À 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.

  9. 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 prédéfinies comme homologues des deux colonnes figurant déjà dans le fichier. Les balises des éléments sont affichées ci-dessous. Vous devez utiliser ces GUID pour l’attribut ID, car il s’agit des types de champs prédéfinis ayant des ID fixes. Ajoutez ces GUID au-dessus des deux éléments FieldRef correspondant aux 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

  1. 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.

  2. 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.

  3. Ouvrez l’enfant du fichier elements.xml du modèle de liste CharactersInShow (et non l’enfant du fichier elements.xml de CharactersInShowInstance).

  4. Ajoutez des espaces à l’attribut DisplayName pour le rendre plus convivial : Characters In Show.

  5. Définissez l’attribut Description sur The characters in a play or movie.

  6. Conservez les valeurs par défaut de tous les autres attributs, enregistrez le fichier, puis fermez-le.

  7. Si le concepteur de liste n’est pas ouvert, sélectionnez le nœud CharactersInShow dans l’Explorateur de solutions.

  8. Cliquez sur l’onglet Colonnes du concepteur, puis sélectionnez le bouton Types de contenu.

  9. Dans la boîte de dialogue Paramètres de type de contenu, ajoutez le type de contenu ActingRole.

  10. Sélectionnez le type de contenu ActingRole dans la liste des types, puis sélectionnez le bouton Définir par défaut.

  11. 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.

  12. 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.

  13. 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.

  14. 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.

  15. 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.

  1. 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.

  2. Ouvrez le fichier schema.xml.

  3. 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).

    Remarque

    Il se peut qu’il n’y ait pas de sauts de ligne entre les éléments ContentType , auquel cas il peut apparaître au début qu’il n’y en a qu’un seul. Faites défiler vers la droite et vérifiez soigneusement les autres.

  4. L’élément Fields doit contenir deux éléments Field (qui figurent sur une seule ligne s’ils ne sont pas séparés par un saut de ligne). L’un d’entre eux doit dupliquer exactement l’élément Field dans le fichier elements.xml de la colonne de site Actor et l’autre doit dupliquer exactement l’élément Field du fichier elements.xml de la colonne de site CastingStatus. Si la correspondance n’est pas exacte, notamment tous les éléments enfants (tels que CHOICES et MAPPINGS), copiez l’élément Field du fichier elements.xml de colonnes de site et collez-le à la place de l’élément Field non concordant dans le fichier schema.xml.

  5. 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 nommé 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>
  1. 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 les accolades « {} ».

  2. Toujours dans le fichier schema.xml, dans l'élément View dont la valeur BaseViewID est « 1 », remplacez l'élément ViewFields existant par le balisage ci-après. (Utilisez précisément ce GUID pour le FieldRef nommé LinkTitle.)

  <ViewFields>
    <FieldRef Name="LinkTitle" ID="{82642ec8-ef9b-478f-acf9-31f7d45fbc31}" DisplayName="Character" />
  </ViewFields>
  1. Copiez les deux éléments FieldRef pour Actor et CastingStatus que vous avez ajoutés à l’affichage précédent à cet élément ViewFields en tant que frères du LinkTitleFieldRef.

  2. Enregistrez le fichier schema.xml, puis fermez-le.

  3. Ouvrez le fichier elements.xml qui est un enfant de l'instance de liste CharactersInHamlet.

  4. 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>
  1. 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.

  2. 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 l’un des modèles objet clients dans SharePoint. Pour une pile non-Microsoft, vous pouvez utiliser les points de terminaison REST/OData dans SharePoint pour effectuer des opérations de création/lecture/mise à jour/suppression (CRUD) sur les données du site web de complément.

Remarque

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 suivant, vous développez une application web ASP.NET. Suivez la procédure ci-après.

  1. Ouvrez le fichier Default.aspx et remplacez l’élément body du fichier par le balisage ci-après. Le balisage ajoute un bouton Get the Cast qui, lorsqu’il est choisi, lit la liste Characters in Hamlet qui se trouve dans le site web du complément et présente ses données dans un contrôle GridView qui apparaît uniquement après l’appui 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>

  1. 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 suivants à la classe **Default**. '''csharp SharePointContextToken contextToken; string accessToken ; Uri sharepointUrl; ```
  1. 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;
      }
  }

  1. Ajoutez le gestionnaire d’événements ci-dessous à la classe Default. Le gestionnaire commence par récupérer le jeton d’accès 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;
  }

  1. 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"]);
    }

  1. 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";

  1. 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();

  1. Ajoutez le code suivant pour analyser le fichier XML de réponse au format ATOM. Il utilise les classes du System.Xml. Espace de noms Linq pour analyser les données retournées et construire une liste<T> des éléments 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<T> 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();

  1. Ajoutez la requête LINQ suivante pour construire une collection T> IEnumerable< d’un type anonyme qui a uniquement les propriétés dont vous avez besoin et pas d’autres. 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ée Character. 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 };

  1. 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, Actor et CastingStatus. 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();

  1. Enregistrez tous les fichiers.

Test et débogage du complément SharePoint

  1. 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é.

  2. 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

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. 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 ».

  8. 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é).

Remarque

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.

  1. L’ adresse web de la liste est située en haut de la page. Copiez-la, puis collez-la dans la barre d’adresses de votre navigateur et puis accédez à la liste. Vérifiez qu’elle contient 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 Character que vous lui avez attribué).

Voir aussi