Criei uma tabela em ASPX. Quero ocultar uma das colunas com base no requisito, mas não há nenhum atributo como visible
na construção da tabela HTML. Como posso resolver meu problema?
Criei uma tabela em ASPX. Quero ocultar uma das colunas com base no requisito, mas não há nenhum atributo como visible
na construção da tabela HTML. Como posso resolver meu problema?
Respostas:
Você precisa usar a folha de estilo para este propósito.
<td style="display:none;">
td:first-child { display:none; }
Você pode usar o nth-child
seletor CSS para ocultar uma coluna inteira:
#myTable tr > *:nth-child(2) {
display: none;
}
Isso funciona supondo que uma célula da coluna N (seja a th
ou td
) é sempre o enésimo elemento filho de sua linha.
Se você quiser que o número da coluna seja dinâmico, pode fazer isso usando querySelectorAll
ou qualquer estrutura que apresente funcionalidade semelhante, como jQuery
aqui:
$('#myTable tr > *:nth-child(2)').hide();
(A solução jQuery também funciona em navegadores legados que não oferecem suportenth-child
).
você também pode usar:
<td style="visibility:hidden;">
or
<td style="visibility:collapse;">
A diferença entre eles que "oculta" esconde a célula, mas mantém o espaço, mas com "colapso" o espaço não é mantido como exibição: nenhum. Isso é significativo ao ocultar uma coluna ou linha inteira.
visibility: collapse
é projetado especificamente para lidar com a exibição / ocultação da célula, uma vez que há uma diferença ao recalcular a largura / altura da célula entre isso e display:none
. Consulte developer.mozilla.org/en-US/docs/Web/CSS/visibility#Values
A resposta de Kos está quase certa, mas pode ter efeitos colaterais prejudiciais. Isso é mais correto:
#myTable tr td:nth-child(1), #myTable th:nth-child(1) {
display: none;
}
CSS (Cascading Style Sheets) colocará atributos em cascata para todos os seus filhos. Isso significa que *:nth-child(1)
irá ocultar o primeiro td
de cada tr
E ocultar o primeiro elemento de todos os td
filhos. Se algum de seus td
tiver coisas como botões, ícones, entradas ou seleções, o primeiro será escondido (woops!).
Mesmo se você não atualmente tem coisas que vão ser escondidas, imagem sua frustração na estrada se você precisa adicionar um. Não castigue o seu futuro eu assim, vai ser chato depurar!
Minha resposta só vai esconder a primeira td
e th
em todos tr
em #myTable
manter seus outros elementos de segurança.
Pessoas bootstrap usam .hidden
classe em <td>
.
Você também pode ocultar uma coluna usando o elemento col https://developer.mozilla.org/en/docs/Web/HTML/Element/col
Para ocultar a segunda coluna em uma tabela:
<table>
<col />
<col style="visibility:collapse"/>
<tr><td>visible</td><td>hidden</td></tr>
<tr><td>visible</td><td>hidden</td></tr>
Problemas conhecidos: isso não funciona no Google Chrome. Vote no bug em https://bugs.chromium.org/p/chromium/issues/detail?id=174167
<style>
.hideFullColumn tr > .hidecol
{
display:none;
}
</style>
use .hideFullColumn na tabela e .hidecol na tabela. Você não precisa adicionar classe em td individualmente, pois será um problema porque o índice pode não estar em mente para cada td.
Você também pode fazer o que vs dev sugere programaticamente atribuindo o estilo com Javascript, iterando através das colunas e definindo o elemento td em um índice específico para ter esse estilo.
<!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);