J'ai créé une table dans ASPX. Je souhaite masquer l'une des colonnes en fonction de l'exigence, mais il n'y a pas d'attribut comme visible
dans la construction de la table HTML. Comment puis-je résoudre mon problème?
J'ai créé une table dans ASPX. Je souhaite masquer l'une des colonnes en fonction de l'exigence, mais il n'y a pas d'attribut comme visible
dans la construction de la table HTML. Comment puis-je résoudre mon problème?
Réponses:
Vous devez utiliser la feuille de style à cet effet.
<td style="display:none;">
td:first-child { display:none; }
Vous pouvez utiliser le nth-child
sélecteur CSS pour masquer une colonne entière:
#myTable tr > *:nth-child(2) {
display: none;
}
Cela fonctionne sous l'hypothèse qu'une cellule de la colonne N (que ce soit th
ou td
) est toujours le Nième élément enfant de sa ligne.
Si vous voulez que le numéro de colonne soit dynamique, vous pouvez le faire en utilisant querySelectorAll
ou tout autre framework présentant des fonctionnalités similaires, comme jQuery
ici:
$('#myTable tr > *:nth-child(2)').hide();
(La solution jQuery fonctionne également sur les navigateurs hérités qui ne prennent pas en chargenth-child
).
vous pouvez aussi utiliser:
<td style="visibility:hidden;">
or
<td style="visibility:collapse;">
La différence entre eux que «caché» cache la cellule mais il contient l'espace mais avec «réduire» l'espace n'est pas tenu comme affichage: aucun. Ceci est important lorsque vous masquez une colonne ou une ligne entière.
visibility: collapse
est conçu spécifiquement pour gérer l'affichage / le masquage des cellules, car il existe une différence lors du recalcul de la largeur / hauteur de la cellule entre ceci et display:none
. Voir developer.mozilla.org/en-US/docs/Web/CSS/visibility#Values
La réponse de Kos est presque juste, mais peut avoir des effets secondaires néfastes. C'est plus correct:
#myTable tr td:nth-child(1), #myTable th:nth-child(1) {
display: none;
}
CSS (Feuilles de style en cascade) va mettre en cascade des attributs à tous ses enfants. Cela signifie que *:nth-child(1)
cela masquera le premier td
de chaque tr
ET masquera le premier élément de tous les td
enfants. Si l'un de vos td
éléments comporte des boutons, des icônes, des entrées ou des sélections, le premier sera masqué (woops!).
Même si vous n'avez actuellement aucun élément qui sera caché, imaginez votre frustration plus tard si vous devez en ajouter un. Ne punissez pas votre futur moi comme ça, ça va être difficile à déboguer!
Ma réponse ne cachera que le premier td
et th
le tout tr
en #myTable
gardant vos autres éléments en sécurité.
Les gens de Bootstrap utilisent la .hidden
classe sur <td>
.
Vous pouvez également masquer une colonne à l'aide de l'élément col https://developer.mozilla.org/en/docs/Web/HTML/Element/col
Pour masquer la deuxième colonne d'un tableau:
<table>
<col />
<col style="visibility:collapse"/>
<tr><td>visible</td><td>hidden</td></tr>
<tr><td>visible</td><td>hidden</td></tr>
Problèmes connus: cela ne fonctionnera pas dans Google Chrome. Veuillez voter pour le bogue sur https://bugs.chromium.org/p/chromium/issues/detail?id=174167
<style>
.hideFullColumn tr > .hidecol
{
display:none;
}
</style>
utilisez .hideFullColumn dans la table et .hidecol dans th.
Vous pouvez également faire ce que vs dev suggère par programme en attribuant le style avec Javascript en itérant dans les colonnes et en définissant l'élément td à un index spécifique pour avoir ce style.
<!doctype html>
<html lang="en">
<head>
<style id="myStyleSheet">
...
</style>
var column = 3;
var styleSheet = document.getElementById("myStyleSheet").sheet;
var rule = "table tr td:nth-child("+ column +"),table th:nth-child("+ column +")
{display: none}";
styleSheet.insertRule(rule);