Remplissage dynamique d’un second champ après remplissage du premier

Vous pouvez remplir de façon dynamique un second champ après avoir rempli le premier en utilisant un script. Par exemple, vous pouvez disposer d’une liste déroulante contenant une liste de pays destinée aux utilisateurs. Lorsqu’un utilisateur sélectionne un pays, la seconde liste affiche les états ou provinces de ce pays.

Ainsi, les éléments suivants peuvent être définis pour l’exemple de fichier XML auquel vous vous connectez :

<MyData> 
      <country/> 
      <countries> 
         <item uiname="United States" token="US"/> 
         <item uiname="Vietnam" token="SRV"/> 
      </countries> 
      <state/> 
      <US> 
         <item>California</item> 
         <item>New York</item> 
         <item>Texas</item> 
      </US> 
      <SRV> 
         <item>An Giang</item> 
         <item>Bac Giang</item> 
         <item>Bac Kan</item> 
      </SRV> 
</MyData>

Par exemple, après avoir sélectionné Vietnam dans la première liste déroulante, les éléments affichés dans la liste Etats/Provinces n’indiquent alors que ceux qui s’appliquent au Vietnam.

Avant d’effectuer cette tâche, assurez-vous que les paramètres suivants sont appliqués :

Pour définir le premier champ

  1. Dans la palette Bibliothèque d’objets, cliquez sur la catégorie Standard et faites glisser un objet Liste déroulante ou Zone de liste sur la conception de formulaire.

    Par exemple, insérez une liste déroulante.

  2. (Facultatif) Dans la palette Objet, cliquez sur l’onglet Champ et tapez une légende pour l’objet de la zone Légende.

    Par exemple, saisissez Pays.

  3. Effectuez l’une des opérations suivantes :

    • Cliquez sur le libellé actif Elém. liste dans le panneau Champ de la palette Objet.

    • Cliquez sur le libellé actif Valeurs élément dans le panneau Liaison de la palette Objet.

  4. Sélectionnez la connexion aux données.

    Remarque : Si vous n’êtes pas connecté à une source de données, Liaison des données par défaut est la seule sélection possible dans la liste Connexion aux données.
  5. Cliquez sur le triangle situé à côté de la liste Eléments et sélectionnez une liaison.

    La liaison que vous sélectionnez doit être une valeur ou un groupe de données qui se répète pour que la liste déroulante ou la zone de liste contienne plusieurs éléments.

    Par exemple, sélectionnez pays > élément.

    La chaîne suivante apparaît dans la zone Eléments :

    $record.countries.item[*]

    Vous pouvez taper cette chaîne dans la zone Eléments au lieu de la sélectionner.
    Remarque : dans le cas des connexions de données OLE, la zone Eléments n’est pas disponible. Les zones Texte de l’élément et Valeur de l’élément vous permettent de sélectionner les colonnes de la base de données destinées à remplir la liste.
  6. Pour afficher un nom d’élément convivial au moment de l’exécution, cliquez sur le triangle situé à côté de la zone Texte de l’élément et sélectionnez une liaison.

    Par exemple, sélectionnez @uiname pour afficher Etats-Unis.

  7. (Facultatif) Pour enregistrer une autre valeur que le libellé Texte de l’élément dans la source de données, cliquez sur le triangle situé à côté de la zone Valeur de l’élément et sélectionnez une liaison.

    Par exemple, sélectionnez @token pour enregistrer US dans le fichier de données.

  8. Cliquez sur OK.

    Lorsqu’une liaison est définie, une petite icône représentant un lien apparaît avec le libellé actif.

Pour définir le script pour qu’il remplisse de façon dynamique un second champ après remplissage du premier

  1. Après avoir sélectionné la première liste déroulante dans l’éditeur de script, choisissez Modifier dans la liste Afficher.

  2. Sélectionnez JavaScript dans la liste Langage.

  3. Entrez le script suivant :

    var tempString = "xfa.record." + this.boundItem(xfa.event.newText); 
    var oItems = xfa.resolveNode(tempString); 
    var nItemsLength = oItems.nodes.length; 
     
    DropDownList2.clearItems(); 
     
    for (var nItemCount = 0; nItemCount < nItemsLength; nItemCount++) { 
          DropDownList2.addItem(oItems.nodes.item(nItemCount).value); 
    }

    Script

    Description

    tempString

    Spécifie une chaîne pour xfa.record. Par exemple, si Etats-Unis est sélectionné, xfa.record est remplacé par xfa.record.US.

    this.boundItem

    Une méthode d’objet de liste qui convertit le nom convivial en une chaîne de valeur ou de jeton. Par exemple, si Etats-Unis est sélectionné, US est transmis.

    xfa.event.newText

    Renvoie le nouveau contenu de texte de l’événement Modification de liste. Par exemple, si Etats-Unis est sélectionné, Etats-Unis est transmis.

    var nItemsLength = oItems.nodes.length;

    Demande le nombre d’éléments enfant de <US> (ou <SRV>), c’est-à-dire est le nombre d’enfants <item>.

    DropDownList2.clearItems();

    Supprime les éléments existants dans la seconde liste déroulante.

    for (var nItemCount = 0; nItemCount < nItemsLength; nItemCount++)

    Demande chaque enfant <item> de <US> (ou <SRV>).

    DropDownList2.addItem(oItems.nodes.item(nItemCount).value);

    Obtient la valeur texte de l’enfant <item> indiquée par l’index nItemCount et ajoute cette valeur en tant que nouvel élément à la seconde liste déroulante.

Pour définir le second champ :

  1. Dans la palette Bibliothèque d’objets, cliquez sur la catégorie Standard et faites glisser un objet Liste déroulante ou Zone de liste sur la conception de formulaire.

    Par exemple, insérez une liste déroulante.

  2. (Facultatif) Dans la palette Objet, cliquez sur l’onglet Champ et tapez une légende pour l’objet de la zone Légende.

    Par exemple, saisissez Etats/Provinces.

  3. Liez le champ à la source de données.

    Par exemple, liez le noeud Etat à la liste déroulante Etats/Provinces.

  4. Affichez le formulaire dans le panneau Aperçu PDF.