Code source wiki de Masquer une colonne d'une table liste
Modifié par Julien EYMERY le 2015/06/30 11:05
Afficher les derniers auteurs
| author | version | line-number | content |
|---|---|---|---|
| 1 | Il existe plusieurs solutions pour afficher / masquer une colonne d'une table liste. | ||
| 2 | |||
| 3 | Soit la table liste TBL_1 avec un entête et 3 colonnes : On veut rendre visible / invisible la deuxième colonne | ||
| 4 | |||
| 5 | |||
| 6 | {{code language="xml" language="xml"}} | ||
| 7 | <table cols="3" id="TBL_1" width="75%" border="1" cellpadding="1" cellspacing="1"> | ||
| 8 | <thead><tr> | ||
| 9 | <td>Entete 1</td> | ||
| 10 | <td>Entete 2</td> | ||
| 11 | <td>Entete 3</td> | ||
| 12 | </tr></thead> | ||
| 13 | <tbody><adelia:tablelist name="TBL_1"> | ||
| 14 | <tr> | ||
| 15 | <td> </td> | ||
| 16 | <td> </td> | ||
| 17 | <td> </td> | ||
| 18 | </tr> | ||
| 19 | </adelia:tablelist></tbody> | ||
| 20 | </table> | ||
| 21 | {{/code}} | ||
| 22 | |||
| 23 | ((( | ||
| 24 | == Solution 1 == | ||
| 25 | ))) | ||
| 26 | |||
| 27 | Encapsuler chaque cellule de la colonne à rendre visible / invisible par une balise condition | ||
| 28 | |||
| 29 | |||
| 30 | {{code language="xml" language="xml"}} | ||
| 31 | <table cols="3" id="TBL_1" width="75%" border="1" cellpadding="1" cellspacing="1"> | ||
| 32 | <thead><tr> | ||
| 33 | <td>Entete 1</td> | ||
| 34 | <adelia:b_cond name="CND_HEADER_COL_2" /> | ||
| 35 | <td>Entete 2</td> | ||
| 36 | <adelia:e_cond /> | ||
| 37 | <td>Entete 3</td> | ||
| 38 | </tr></thead> | ||
| 39 | <tbody><adelia:tablelist name="TBL_1"> | ||
| 40 | <tr> | ||
| 41 | <td> </td> | ||
| 42 | <adelia:b_cond name="CND_COL_2" /> | ||
| 43 | <td> </td> | ||
| 44 | <adelia:e_cond /> | ||
| 45 | <td> </td> | ||
| 46 | </tr> | ||
| 47 | </adelia:tablelist></tbody> | ||
| 48 | </table> | ||
| 49 | {{/code}} | ||
| 50 | |||
| 51 | |||
| 52 | La variable booléenne CND_HEADER_COL_2 est de portée "page" mais la variable CND_COL_2 devient une variable colonne de la table liste TBL_1. | ||
| 53 | |||
| 54 | Donc pour rendre visible / invisible la colonne 2 par programme, il faut : | ||
| 55 | - Fixer une valeur pour CND_HEADER_COL_2, | ||
| 56 | - Fixer une valeur pour CND_COL_2 pour chaque ligne de TBL_1. | ||
| 57 | |||
| 58 | Avantage de cette solution : | ||
| 59 | - optimisation du flux HTML renvoyé au navigateur (seul le code HTML des colonnes visibles est renvoyé), | ||
| 60 | - simplicité de mise en oeuvre. | ||
| 61 | |||
| 62 | Inconvénient de cette solution : | ||
| 63 | - Rajout d'une colonne booléenne (CND_COL_2) dans la liste mémoire associée à TBL_1 (augmentation consommation mémoire du serveur Web), | ||
| 64 | - Rendre visible / invisible la colonne 2 se fait obligatoirement coté serveur (donc implique un aller / retour serveur). | ||
| 65 | ((( | ||
| 66 | == Solution 2 == | ||
| 67 | ))) | ||
| 68 | |||
| 69 | Utilisation de classes de style CSS | ||
| 70 | |||
| 71 | |||
| 72 | {{code language="xml" language="xml"}} | ||
| 73 | <table cols="3" id="TBL_1" width="75%" border="1" cellpadding="1" cellspacing="1" class="::TBL_1_CLASS"> | ||
| 74 | <thead><tr> | ||
| 75 | <td>Entete 1</td> | ||
| 76 | <td class="col2">Entete 2</td> | ||
| 77 | <td>Entete 3</td> | ||
| 78 | </tr></thead> | ||
| 79 | <tbody><adelia:tablelist name="TBL_1"> | ||
| 80 | <tr> | ||
| 81 | <td> </td> | ||
| 82 | <td class="col2"> </td> | ||
| 83 | <td> </td> | ||
| 84 | </tr> | ||
| 85 | </adelia:tablelist></tbody> | ||
| 86 | </table> | ||
| 87 | {{/code}} | ||
| 88 | |||
| 89 | |||
| 90 | Rajouter pour chaque cellule (balise TD) de la colonne 2 un attribut class avec comme valeur "col2". | ||
| 91 | Rajouter un attribut class à la balise TABLE de la table liste TBL_1 avec comme valeur une variable Adélia alpha TBL_1_CLASS | ||
| 92 | Rajouter dans la feuille de style associée au programme (ou dans une balise STYLE inline) la règle CSS suivante : | ||
| 93 | |||
| 94 | |||
| 95 | {{code language="css" language="css"}} | ||
| 96 | table.hideCol2 .col2 { | ||
| 97 | display : none; | ||
| 98 | } | ||
| 99 | {{/code}} | ||
| 100 | |||
| 101 | |||
| 102 | Dans le code L4G, fixer la variable TBL_1_CLASS avec la valeur suivante : | ||
| 103 | - *BLANK pour rendre visible la colonne 2, | ||
| 104 | - "hideCol2" pour rendre invisible la colonne 2. | ||
| 105 | |||
| 106 | Note : Si le code L4G ci-dessus s'exécute dans un événement Ajax alors il faut encapsuler la balise TABLE d'une aire de rafraîchissement et forcer l'affichage (avec l'ordre FORCE_AFFICHAGE) de cette aire. | ||
| 107 | |||
| 108 | Avantage de cette solution : | ||
| 109 | - code L4G plus simple et moins lourd (pas de parcours / modification de liste) | ||
| 110 | - aucune variable colonne de la liste mémoire rajoutée (pas d'augmentation mémoire), | ||
| 111 | - peut être entièrement fait coté navigateur en Javascript (donc pas d'aller / retour serveur pour rendre visible / invisible une colonne). | ||
| 112 | |||
| 113 | Inconvénient de cette solution : | ||
| 114 | - Le flux HTML renvoyé contient toutes les données de la table liste (y compris le code HTML des colonnes invisibles). | ||
| 115 | ((( | ||
| 116 | == | ||
| 117 | Solution 3 == | ||
| 118 | ))) | ||
| 119 | |||
| 120 | Utilisation de classes de style CSS sur la balise COL (ne fonctionne pas sous Chrome) | ||
| 121 | |||
| 122 | |||
| 123 | {{code language="xml" language="xml"}} | ||
| 124 | <table cols="3" id="TBL_1" width="75%" border="1" cellpadding="1" cellspacing="1"> | ||
| 125 | <colgroup> | ||
| 126 | <col /> | ||
| 127 | <col class="::CLASS_COL_2"/> | ||
| 128 | <col /> | ||
| 129 | </colgroup> | ||
| 130 | <thead><tr> | ||
| 131 | <td>Entete 1</td> | ||
| 132 | <td>Entete 2</td> | ||
| 133 | <td>Entete 3</td> | ||
| 134 | </tr></thead> | ||
| 135 | <tbody><adelia:tablelist name="TBL_1"> | ||
| 136 | <tr> | ||
| 137 | <td> </td> | ||
| 138 | <td> </td> | ||
| 139 | <td> </td> | ||
| 140 | </tr> | ||
| 141 | </adelia:tablelist></tbody> | ||
| 142 | </table> | ||
| 143 | {{/code}} | ||
| 144 | |||
| 145 | |||
| 146 | Rajouter une balise COLGROUP dans laquelle on défini la classe CSS de la colonne 2. | ||
| 147 | Rajouter dans la feuille de style associée au programme (ou dans une balise STYLE inline) la règle CSS suivante : | ||
| 148 | |||
| 149 | |||
| 150 | {{code language="css" language="css"}} | ||
| 151 | .hideTBL_1_COL { | ||
| 152 | visibility:collapse; | ||
| 153 | } | ||
| 154 | {{/code}} | ||
| 155 | |||
| 156 | |||
| 157 | Pour IE version inférieure à 8, définir cette classe dans un commentaire conditionnel (avec display à none): | ||
| 158 | |||
| 159 | |||
| 160 | {{code language="css" language="css"}} | ||
| 161 | <!--[if lte IE 7]> | ||
| 162 | <style> | ||
| 163 | .hideTBL_1_COL { | ||
| 164 | display:none; | ||
| 165 | } | ||
| 166 | </style> | ||
| 167 | <![endif]--> | ||
| 168 | {{/code}} | ||
| 169 | |||
| 170 | |||
| 171 | Dans le code L4G, fixer la variable CLASS_COL_2 avec la valeur suivante : | ||
| 172 | - *BLANK pour rendre visible la colonne 2, | ||
| 173 | - "hideTBL_1_COL" pour rendre invisible la colonne 2. | ||
| 174 | |||
| 175 | Note : Si le code L4G ci-dessus s'exécute dans un événement Ajax alors il faut encapsuler la balise COLGROUP d'une aire de rafraîchissement et forcer l'affichage (avec l'ordre FORCE_AFFICHAGE) de cette aire. | ||
| 176 | |||
| 177 | Avantage de cette solution : | ||
| 178 | - code L4G plus simple et moins lourd (pas de parcours / modification de liste) | ||
| 179 | - aucune variable colonne de la liste mémoire rajoutée (pas d'augmentation mémoire), | ||
| 180 | - peut être entièrement fait coté navigateur en Javascript (donc pas d'aller / retour serveur pour rendre visible / invisible une colonne), | ||
| 181 | - flux HTML retourné dans le cas d'un événement Ajax moins lourd (seulement la balise COLGROUP) par rapport à la solution 2. | ||
| 182 | |||
| 183 | Inconvénient de cette solution : | ||
| 184 | - Le flux HTML renvoyé contient toutes les données de la table liste (y compris le code HTML des colonnes invisibles), | ||
| 185 | - Pas supporté par Chrome (bug ?) | ||
| 186 | ((( | ||
| 187 | == | ||
| 188 | Articles connexes == | ||
| 189 | ))) | ||
| 190 | |||
| 191 | Les articles connexes apparaissent ici en fonction des étiquettes que vous avez sélectionnées. Cliquez pour modifier la macro et ajouter ou modifier des étiquettes. | ||
| 192 | |||
| 193 | {{liveData sort="doc.date:desc" source="liveTable" properties="doc.title,doc.date,doc.author" description="Recently updated" limit="5" filters="tag=web liste" sourceParameters="translationPrefix=platform.index."}}{{/liveData}} | ||
| 194 |