Procédure : Personnaliser des formulaires de liste externe à l’aide de Microsoft InfoPath
Dernière modification : vendredi 16 avril 2010
S’applique à : SharePoint Server 2010
Microsoft Business Connectivity Services (BCS) génère des formulaires SharePoint par défaut pour l’affichage, la création et la modification automatiques d’éléments à partir d’une liste externe. Toutefois, les options de personnalisation sur ces formulaires de composants WebPart de base peuvent être limitées. Si vous souhaitez effectuer des personnalisations enrichies ou ajouter des règles déclaratives ou une logique métier aux formulaires, vous pouvez remplacer les formulaires Créer, Afficher et Mettre à jour par défaut d’une liste externe SharePoint par des formulaires Microsoft InfoPath 2010.
Pour remplacer les formulaires SharePoint par défaut par des formulaires InfoPath
Dans votre navigateur, accédez à la liste externe.
Dans le Ruban serveur, cliquez sur Modifier la liste. La liste externe s’ouvre dans Microsoft SharePoint Designer 2010.
Dans le Ruban, cliquez sur le bouton Créer des formulaires dans InfoPath, comme illustré à la Figure 1.
Figure 1. Remplacer un formulaire SharePoint par défaut par un formulaire InfoPath
Concevez le formulaire à votre gré, avec des éléments tels que des types personnalisés. Les contrôles pour les champs simples sont générés automatiquement ; en revanche, pour les types complexes vous devez faire glisser vos propres contrôles à partir de la boîte à outils.
Une fois que vous avez terminé, dans le menu Fichier, cliquez sur Publication rapide pour republier le formulaire sur le serveur.
Vous pouvez maintenant naviguer vers la liste externe et créer ou afficher un élément. Le formulaire affiché est le nouveau formulaire InfoPath au lieu du formulaire SharePoint par défaut.
Personnalisation de l’apparence des formulaires
Vous pouvez personnaliser l’apparence et le comportement de vos formulaires de liste externe à l’aide d’InfoPath. Dans la vidéo intitulée InfoPath 2010 - Customize a SharePoint List Form (éventuellement en anglais), Daniel Broekman, responsable de programme au sein de l’équipe de produit InfoPath, explique comment personnaliser rapidement un formulaire de liste SharePoint à l’aide d’InfoPath 2010. Vous pouvez appliquer la procédure décrite dans la vidéo pour remplacer un formulaire de liste externe SharePoint par défaut par un formulaire InfoPath et le personnaliser afin de modifier son apparence et son comportement.
Ajout de règles déclaratives ou de logique métier à des formulaires
Vous pouvez ajouter des règles déclaratives ou une logique métier au formulaire dans InfoPath sans écrire de code. Par exemple, vous pouvez créer une règle afin de limiter l’entrée d’un code postal à cinq chiffres (12345) ou forcer les utilisateurs à entrer des numéros de téléphone dans un certain format. La vidéo InfoPath 2010 portant sur la personnalisation d’un formulaire de liste SharePoint montre également comment ajouter des règles déclaratives et une logique métier à votre formulaire.
Rendu de types de complexes
L’un des scénarios dans lesquels le remplacement d’un formulaire SharePoint par un formulaire InfoPath 2010 est très utile est lorsque vous souhaitez restituer et modifier des types complexes définis dans un système externe. Prenez par exemple un champ Adresse renvoyé par un SpecificFinder d’un type de contenu externe. Ce champ Adresse peut être un type complexe dans un système externe qui contient plusieurs sous-types, comme illustré à la Figure 2.
Figure 2. Type complexe dans SharePoint Designer 2010
Notez les avertissements affichés dans SharePoint Designer. Si Microsoft Business Connectivity Services (BCS) découvre ce genre de type complexe dans un paramètre de retour d’un SpecificFinder, il ignore ce champ dans le formulaire de liste externe SharePoint ordinaire. La Figure 3 illustre la page Afficher l’élément par défaut d’une liste externe qui contient ce type complexe Address. Remarquez que le champ Adresse est ignoré et n’est pas affiché dans le formulaire. De plus, si Adresse est un champ obligatoire pour les opérations Créer ou Mettre à jour dans le système externe, vous ne pouvez pas créer ou modifier d’éléments Customer.
Figure 3. Page Afficher l’élément par défaut d’une liste externe qui contient le type complexe
Dans un tel cas, vous pouvez convertir le formulaire au format InfoPath. Le SpecificFinder ayant un type complexe (Adresse dans notre exemple), Business Connectivity Services ne crée pas le formulaire avec tous les champs et contrôles obligatoires. Au lieu de cela, il crée un formulaire InfoPath vide sans ajouter de champs au formulaire, comme illustré à la Figure 4.
Figure 4. Formulaire InfoPath vide
Pour résoudre ce problème, faites glisser les champs dataFields à partir de la section Champs dans le volet Office. Toutefois, cela fonctionne uniquement si tous les sous-types du type complexe peuvent être affichés à l’aide des contrôles disponibles dans InfoPath. Par exemple, dans notre exemple Address, tous ses sous-types peuvent être affichés à l’aide d’un contrôle de champ Texte.
Si un type complexe (ou personnalisé) ou l’un de ses sous-types ne peut pas être affiché à l’aide d’un des contrôles disponibles dans InfoPath, vous devez concevoir un contrôle InfoPath personnalisé et l’utiliser pour afficher ce champ. Si vous ajoutez un contrôle InfoPath personnalisé, vous ne pouvez pas publier le formulaire sur le serveur.
Après avoir conçu le formulaire, vous pouvez l’enregistrer et effectuer une publication rapide à l’emplacement actuel. Le formulaire de liste externe commence à afficher tous les formulaires. La Figure 5 montre le formulaire Afficher l’élément de liste externe après sa conversion au format InfoPath. La seule action ici consiste à faire glisser les contrôles dataFields dans la zone de conception du formulaire.
Figure 5. Formulaire Afficher l’élément de liste externe converti au format InfoPath
Notez que le champ Address et tous ses sous-types sont affichés. Si le type de contenu externe a des opérations Create et Update définies, vous pouvez créer et modifier des éléments clients à l’aide des formulaires de liste externe.
Incorporation d’un contrôle de sélection d’élément externe
Pour les scénarios dans lesquels un utilisateur doit sélectionner un élément externe, tel qu’un client nommé John parmi une liste de clients, InfoPath 2010 fournit un contrôle Sélecteur d’élément externe qui permet d’incorporer un sélecteur dans un formulaire. Un Sélecteur d’élément externe procure une fonctionnalité de sélection et de résolution pour des éléments externes sur le serveur et dans des applications Microsoft Office à client enrichi.
Si vous configurez des associations pour des types de contenu externe dans le magasin de métadonnées BDC et le formulaire de liste externe pour l’un des types de contenu externe qui contient une clé étrangère, Business Connectivity Services ajoute automatiquement un contrôle de sélection au formulaire pour ce champ. Prenez par exemple un scénario client/commande. Supposez que les types de contenu externe et l’association sont déjà configurés. Si vous migrez le formulaire de liste externe Commande vers InfoPath, Business Connectivity Services place par défaut un contrôle Sélecteur d’élément externe pour le champ CustomerID dans le formulaire Commande. Cela permet aux utilisateurs de trouver facilement le client recherché lorsqu’ils travaillent avec des commandes.
Toutefois, si votre formulaire InfoPath généré automatiquement est vide car le SpecificFinder a un ou plusieurs types complexes, vous devez faire glisser un contrôle Sélecteur d’élément externe à partir du Ruban et définir les propriétés requises. Pour plus d’informations, voir Procédure : incorporer un contrôle de sélecteur d’éléments externes dans un formulaire InfoPath.
Création de plusieurs affichages d’un formulaire
Votre formulaire InfoPath de liste externe peut avoir plusieurs affichages. Cela est particulièrement utile dans les scénarios à écriture unique où le système externe ne vous permet pas de mettre à jour un champ après sa création. Dans ces cas-là, vous pouvez créer deux affichages : un pour l’opération Créer et un (en lecture seule) pour l’opération Mettre à jour. Vous pouvez mettre à jour les pages .aspx pour Créer et Modifier de façon à présenter l’affichage correct du formulaire.
Ajout de code-behind ou de règles
Pour finir, vous pouvez ajouter du code-behind ou des règles à votre formulaire InfoPath. (Pour plus d’informations sur la façon d’ajouter du code-behind à un formulaire InfoPath, voir la Référence du développeur InfoPath 2010 pour les modèles de formulaires. Pour plus d’informations sur la façon d’ajouter des règles à un formulaire InfoPath, voir l’aide d’InfoPath 2010. Vous pouvez ajouter du code-behind ou des règles pour effectuer une logique métier supplémentaire sur l’entrée de données, par exemple pour vous assurer que le code postal entré est un code postal français valide. Vous pouvez également utiliser le modèle objet Business Connectivity Services dans le code pour accéder au système externe ou au magasin de métadonnées BDC dans votre code. Les formulaires avec du code-behind ont besoin d’une approbation complète sur le client et requièrent des droits d’administrateur.
Important
-
Vous devez commencer à créer les formulaires InfoPath de liste externe à partir des formulaires InfoPath générés automatiquement fournis par Business Connectivity Services.
-
Un formulaire de liste externe ne peut se connecter à aucune autre source ; autrement dit, vous ne pouvez pas avoir de connexions de données secondaires dans le formulaire.
-
Lorsque vous convertissez un formulaire de liste externe au format InfoPath, si le SpecificFinder a des types complexes, un affichage vierge est généré. Vous devez faire glisser les contrôles dataFields à partir du volet Office.
-
Si un type complexe (ou personnalisé) ou l’un de ses sous-types ne peut pas être affiché à l’aide d’un des contrôles disponibles dans Microsoft InfoPath, vous devez concevoir un contrôle InfoPath personnalisé et l’utiliser pour afficher ce champ.
-
Vous pouvez ajouter des règles déclaratives ou une logique métier au formulaire dans InfoPath sans écrire de code.
-
Vous pouvez ajouter du code-behind à votre formulaire InfoPath de façon à inclure une logique métier supplémentaire dans la saisie des données. Vous pouvez également utiliser le modèle objet Business Connectivity Services dans le code pour accéder au système externe ou au magasin de métadonnées BDC dans votre code.
-
Les pages .aspx de liste externe côté serveur peuvent pointer vers des formulaires InfoPath personnalisés. Toutefois, ces formulaires ne sont pas affichés sur le client lorsque la liste externe est mise hors connexion.
-
En cas de non-correspondance de version du type de contenu externe et du formulaire de liste externe, les formulaires peuvent ne pas fonctionner sur le serveur et le client en cas de mise hors connexion. Dans ce cas, vous devrez peut-être republier le formulaire sur le serveur.