Rechercher dans la base de connaissances par mot-clé

Effectuez une recherche dans notre base de connaissances

ecaldima.com | Support | Contact

TEC-35 – Cacher ou afficher des champs en fonction de la valeur d’un autre champ

Vous êtes ici :

Il arrive qu’il soit nécessaire de masquer des champs dans un formulaire en fonction des valeurs d’autres champs, par exemple, masquer le champ « date de fin de contrat » lorsque le champ sélecteur du type de contrat contient la valeur CDI ou masquer les champs « Véhicule de société » et « Smartphone » lorsque le champ sélecteur du type de contrat contient la valeur « Stagiaire » et le champ « Type de poste » contient la valeur « Sédentaire » et afficher le champ « Smartphone » si  le champ sélecteur du type de contrat contient la valeur « Stagiaire » et le champ « Type de poste » contient la valeur « Nomade ».

Pour gérer les différentes combinaisons possibles d’affichage et de masquage de champs, Ecaldima dispose d’un mécanisme qui s’appuie sur une table de la base de données et une propriété étendue d’un ou plusieurs champs.

La table qui contient un enregistrement pour chaque valeur ou combinaison de valeurs possibles d’un ou plusieurs champs et les champs qui s’affichent ou se masquent en fonction de la valeur.

La valeur {EcaldimaAny} se substitue à n’importe quelle valeur sauf la valeur « vide ».

Pour indiquer la valeur « Vide » c’est-à-dire quand aucune information n’est sélectionnée dans un sélecteur ou dans une textebox.

Il est conseillé de donner un nom à la table qui prend en compte son périmètre. En effet, un champ pourra se comporter de manière différente suivant qu’il est dans un service ou un autre, dans un article ou un autre.

Nom de la table

Utiliser une règle de nommage pour les tables d’affichage et masquage de champs permet de les retrouver plus facilement et d’en apprécier la portée d’une simple lecture.

La structure du nom peut être la suivante :

<CLIENT>_t_SHOWHIDE_<Numéro de service (Id)>_<Numéro d’article (Id)>_<Numéro du champ (Id) qui conditionne l’affichage des autres>

Par exemple, pour le champ 100 de l’article 10 du service 1 chez le client KNS, ou aurait comme nom de table :

KNS_t_SHOWHIDE_1_10_100

Autre exemple, pour le champ 200 du service 2 sans tenir compte d’un article chez le client ALD, on aurait comme nom de table :

ALD_t_SHOWHIDE_2_0_200

Autre exemple, pour le champ 300 de l’article 30 sans tenir compte du service chez le client SEPRO, on aurait comme nom de table :

SEPRO_t_SHOWHIDE_0_30_300

Enfin, pour plusieurs champs du service 40 chez le client CFL et quel que soit l’article, on aurait comme nom de table :

CFL_t_SHOWHIDE_40_0_0

Cette convention de nommage n’a pas de vocation technique, elle permet simplement d’apprécier la portée d’une table en voyant son nom.

Structure de la table

La structure de la table doit respecter les conditions suivantes :

  • Les premiers champs sont les valeurs à comparer et doivent se nommer FIELD_<numéro du champ> et être de type nvarchar d’une taille suffisante pour contenir la valeur possible
  • Les autres sont les comportements, affichage ou masquage et doivent se nommer SHOW_<numéro du champ> et être de type bit

La lecture de la table s’effectue dans l’ordre alphanumérique des champs FIELD combinés tels que dans la structure de la table. Si la table comporte deux champ FIELD, le tri s’effectuera sur le premier puis le second indépendamment des numéros de champ. Il s’agit de l’instruction « ORDER BY » du SQL qui applique donc ORDER BY <Premier champ Field>, <Second champ FIELD>…

Dès qu’une ligne qui correspond aux conditions est trouvée, elle s’applique et la recherche s’arrête là.

Exemples

Le service concerné est le service « Nouvel arrivant » dont le numéro est le 5. Le client est la société ABCD.

Nom du champNº du champ (Id)
Type de contrat 100
Date de fin de contrat200
Véhicule de société300
Smartphone301
Type de poste400

Cas nº 1 – Masquer la date de fin de contrat si le champ « Type de contrat » contient CDI

Structure de la table ABCD_t_SHOWHIDE_21_0_100

FIELD_100SHOW_200
CDI0
{EcaldimaAny}1

SQL

CREATE TABLE  dbo.[ ABCD_t_SHOWHIDE_21_0_100] (_Id int IDENTITY(1,1),FIELD_100 nvarchar(50), SHOW_200 bit)
INSERT dbo. ABCD_t_SHOWHIDE_21_0_100(Field_100, SHOW_200) VALUES (‘CDI’,0)
INSERT dbo. ABCD_t_SHOWHIDE_21_0_100(Field_100, SHOW_200)  VALUES (‘{EcaldimaAny}’,1)

Cas nº 2 – En plus du cas nº 1, Il faut masquer le champ « Véhicule de fonction » si le type de contrat est « Stagiaire » et masquer le champ « Smartphone » si le type de poste est « Sédentaire ».

Structure de la table ABCD_t_SHOWHIDE_21_0_0

FIELD_100FIELD_400SHOW_200SHOW_300SHOW_301
CDI{EcaldimaAny}011
StagiaireSédentaire100
StagiaireNomade101
{EcaldimaAny}{EcaldimaAny}111

SQL

CREATE TABLE  dbo.[ ABCD_T_SHOWHIDE_21_0_0] (_Id int identity(1,1),FIELD_100 nvarchar(50), FIELD_400 nvarchar(50),  SHOW_200 bit,  SHOW_300 bit,  SHOW_301 bit)
INSERT dbo. ABCD_T_SHOWHIDE_21_0_100(Field_100, Field_400,  SHOW_200,  SHOW_300,  SHOW_301)  VALUES (‘CDI’, ‘{EcaldimaAny}’,0,1,1)

INSERT dbo. ABCD_T_SHOWHIDE_21_0_100(Field_100, Field_400,  SHOW_200,  SHOW_300,  SHOW_301) VALUES (‘Stagiaire’,’ Sédentaire’,0,1,1)

INSERT dbo. ABCD_T_SHOWHIDE_21_0_100(Field_100, Field_400,  SHOW_200,  SHOW_300,  SHOW_301) VALUES (‘Stagiaire, ‘Nomade’,0,1,1)

INSERT dbo. ABCD_T_SHOWHIDE_21_0_100(Field_100, Field_400,  SHOW_200,  SHOW_300,  SHOW_301) VALUES (‘{EcaldimaAny}’, ‘{EcaldimaAny}’,1,1,1)

Utilisation de la table

Afin d’utiliser la table d’affichage et masquage, il est nécessaire de l’indiquer dans chaque champ qui doit interagir avec l’affichage. Dans nos exemples précédents, on le ferait sur les champs 100 et 400.

Pour ce faire, il faut ajouter le propriété étendue USESHOWHIDETABLE sur chacun des champs et lui donner le nom de la table comme valeur.

La partie du numéro de service dans le nom de la table peut être remplacé par {ServiceId}. De telle façon, le champ pourra aller chercher la table qui correspond au service dans lequel il est utilisé à ce moment-là.

Dans le cas nº1 la propriété étendue serait :

NomValeur
USESHOWHIDETABLEABCD_T_SHOWHIDE_21_0_100

Dans le cas nº2 la propriété étendue serait :

NomValeur
USESHOWHIDETABLEABCD_T_SHOWHIDE_21_0_0
Cet article a-t-il été utile ?
0 out Of 5 Stars
5 Estrellas 0%
4 Estrellas 0%
3 Estrellas 0%
2 Estrellas 0%
1 Estrellas 0%
5
Comment pouvons-nous améliorer cet article ?
Please submit the reason for your vote so that we can improve the article.
KB Ecaldima