Saya telah membuat tabel di ASPX. Saya ingin menyembunyikan salah satu kolom berdasarkan persyaratan tetapi tidak ada atribut seperti visible
pada pembuatan tabel HTML. Bagaimana saya bisa mengatasi masalah saya?
html
asp.net
html-table
pengguna601367
sumber
sumber
td:first-child { display:none; }
Anda dapat menggunakan
nth-child
pemilih CSS untuk menyembunyikan seluruh kolom:#myTable tr > *:nth-child(2) { display: none; }
Ini bekerja dengan asumsi bahwa sel kolom N (baik itu a
th
atautd
) selalu merupakan elemen turunan ke-N dari barisnya.Berikut demo nya.
Jika Anda ingin nomor kolom menjadi dinamis, Anda dapat melakukannya menggunakan
querySelectorAll
atau kerangka kerja apa pun yang menyajikan fungsionalitas serupa, seperti dijQuery
sini:$('#myTable tr > *:nth-child(2)').hide();
Demo dengan jQuery
(Solusi jQuery juga berfungsi pada browser lama yang tidak mendukung
nth-child
).sumber
Anda juga bisa menggunakan:
<td style="visibility:hidden;"> or <td style="visibility:collapse;">
Perbedaan di antara mereka yang "tersembunyi" menyembunyikan sel tetapi menahan ruang tetapi dengan "menutup" ruang tidak diadakan seperti tampilan: tidak ada. Ini penting saat menyembunyikan seluruh kolom atau baris.
sumber
visibility: collapse
dirancang khusus untuk menangani sel yang menunjukkan / menyembunyikan, karena ada perbedaan saat menghitung ulang lebar / tinggi sel antara ini dandisplay:none
. Lihat developer.mozilla.org/en-US/docs/Web/CSS/visibility#ValuesJawaban Kos hampir benar, tetapi dapat memiliki efek samping yang merusak. Ini lebih benar:
#myTable tr td:nth-child(1), #myTable th:nth-child(1) { display: none; }
CSS (Cascading Style Sheets) akan kaskade atribut untuk semua anak-anaknya. Ini berarti itu
*:nth-child(1)
akan menyembunyikan yang pertamatd
dari setiaptr
DAN menyembunyikan elemen pertama dari semuatd
anak. Jika salah satu dari Andatd
memiliki hal-hal seperti tombol, ikon, input, atau pilihan, yang pertama akan disembunyikan (woops!).Bahkan jika Anda tidak saat ini memiliki hal-hal yang akan disembunyikan, gambar frustrasi Anda di jalan jika Anda perlu untuk menambahkan satu. Jangan menghukum diri Anda di masa depan seperti itu, itu akan merepotkan untuk di-debug!
Jawaban saya hanya akan menyembunyikan pertama
td
danth
pada semuatr
di#myTable
menjaga elemen lain yang aman.sumber
Orang-orang bootstrap menggunakan
.hidden
kelas di<td>
.sumber
Anda juga dapat menyembunyikan kolom menggunakan elemen col https://developer.mozilla.org/en/docs/Web/HTML/Element/col
Untuk menyembunyikan kolom kedua dalam tabel:
<table> <col /> <col style="visibility:collapse"/> <tr><td>visible</td><td>hidden</td></tr> <tr><td>visible</td><td>hidden</td></tr>
Masalah umum: ini tidak akan berfungsi di Google Chrome. Silakan pilih bug di https://bugs.chromium.org/p/chromium/issues/detail?id=174167
sumber
<style> .hideFullColumn tr > .hidecol { display:none; } </style>
gunakan .hideFullColumn dalam tabel dan .hidecol di th. Anda tidak perlu menambahkan kelas di td secara individual karena akan menjadi masalah karena indeks mungkin tidak memikirkan setiap td.
sumber
Anda juga dapat melakukan apa yang disarankan vs dev secara terprogram dengan menetapkan gaya dengan Javascript dengan melakukan iterasi melalui kolom dan menyetel elemen td pada indeks tertentu untuk memiliki gaya tersebut.
sumber
<!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);
sumber