👥 Plusieurs formulaires
Chaque formulaire est lié à une table. L'URL de partage contient le paramètre table=NomTable.
Exemple : ...?mode=form&table=Clients
🔗 Sélecteurs en cascade (options dynamiques)
Les champs Liste déroulante, Choix unique et Cases à cocher peuvent charger leurs options depuis une table Grist, et les filtrer en cascade selon la valeur d'un autre champ du formulaire (ex. choisir un département → ne voir que les villes de ce département).
📋 Étape 1 — Préparer la table source dans Grist
Crée une table contenant tes options. Exemple Villes :
nom · code_dept
Lyon · 69
Bron · 69
Grenoble · 38
Paris 1er · 75
🎨 Étape 2 — Configurer le champ "parent"
- Glisse une Liste déroulante sur le canvas
- Clique dessus pour ouvrir les propriétés à droite
- Donne-lui un libellé clair : ex. "Département"
- Section Source des options → clique 🔗 Depuis Grist
- Choisis la table source (ex.
Departements), la colonne libellé (nom) et la colonne valeur (code)
- Pas de filtre nécessaire pour ce champ — il propose toutes les valeurs
🌳 Étape 3 — Configurer le champ "enfant" (cascade)
- Glisse une autre Liste déroulante
- Libellé : "Ville", source 🔗 Depuis Grist
- Table source :
Villes, colonne libellé : nom
- Section Filtres en cascade → clique + Ajouter un filtre
- Champ parent : Département · Opérateur : = · Colonne source :
code_dept
💡 Quand l'utilisateur choisira un département, le select Ville rechargera automatiquement ses options en ne gardant que celles dont code_dept correspond.
🧮 Les 4 opérateurs disponibles
= (égal à) — la colonne source vaut exactement la valeur du parent.
Ex. ville.code_dept = 69 si Département = 69
≥ (supérieur ou égal) — la colonne source est ≥ valeur du parent.
Ex. produit.prix_min ≥ budget saisi
≤ (inférieur ou égal) — la colonne source est ≤ valeur du parent.
Ex. tarif.plafond ≤ revenu déclaré
entre deux colonnes — la valeur du parent est entre deux colonnes (min/max) de la table source.
Ex. produit.age_min ≤ âge_saisi ≤ produit.age_max
🔀 Plusieurs filtres combinés (ET)
Tu peux ajouter plusieurs filtres sur un même champ. Toutes les conditions doivent être vraies pour qu'une option soit affichée.
Exemple : select "Produits" filtré par Catégorie = catégorie ET Âge entre age_min et age_max → ne propose que les produits de la bonne catégorie ET adaptés à l'âge.
⚡ Comportement à la saisie
- Si le parent n'a pas encore de valeur, son filtre est ignoré (pas de blocage)
- Quand le parent change, l'enfant recharge ses options automatiquement
- Cascade transitive (A → B → C) gérée : changer A reconfigure B, qui reconfigure C
- Si la valeur sélectionnée d'un enfant n'est plus valide, elle est réinitialisée
🎯 Exemple complet — Recommander des produits selon l'âge
Démontre l'opérateur entre deux colonnes avec un cas pratique : l'utilisateur saisit son âge et le formulaire propose uniquement les produits adaptés à sa tranche.
📊 Table Produits dans Grist
nom · categorie · age_min · age_max · prix
Hochet musical · Bébé · 0 · 2 · 15
Tricycle · Enfant · 3 · 7 · 80
Trottinette · Enfant · 6 · 12 · 90
Skateboard · Ado · 10 · 16 · 120
Tablette · Tous · 10 · 99 · 300
Vélo VTT adulte · Adulte · 16 · 75 · 600
Carte senior SNCF · Senior · 60 · 120 · 75
🛠️ Champ 1 — Âge (saisie utilisateur)
- Glisse un élément Nombre sur le canvas
- Libellé : "Quel est votre âge ?"
- Pas de source Grist nécessaire (l'utilisateur tape)
🛠️ Champ 2 — Produits recommandés (cascade)
- Glisse une Liste déroulante, libellé : "Produits recommandés"
- Source des options → 🔗 Depuis Grist
- Table source :
Produits
- Colonne libellé :
nom
- Colonne valeur :
nom (ou laisse vide)
- Section Filtres en cascade → + Ajouter un filtre
- Champ parent : Quel est votre âge ?
- Opérateur : entre deux colonnes
- Colonne minimum :
age_min
- Colonne maximum :
age_max
▶️ Résultat à la saisie
• Saisir 5 → propose : Tricycle, Trottinette
• Saisir 12 → propose : Trottinette, Skateboard, Tablette
• Saisir 30 → propose : Tablette, Vélo VTT adulte
• Saisir 65 → propose : Tablette, Vélo VTT adulte, Carte senior SNCF
💡 Pour aller plus loin : ajoute un second filtre sur ce même champ avec un autre champ parent Catégorie (sélecteur statique avec Bébé/Enfant/Ado/Adulte/Senior) et opérateur = sur la colonne categorie. Tu obtiens un filtrage croisé âge ET catégorie.
⚠️ Permission requise : le widget doit avoir "Accès complet au document" pour lister les tables et lire les données. Configure-le dans le panneau du widget Grist (à droite de l'écran).
📥 Données prêtes à l'emploi : les CSV d'exemple (Departements, Villes, Produits) sont disponibles dans le dossier /exemples/ du dépôt GitHub du widget.