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?
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?
Jawaban:
Anda perlu menggunakan Style Sheet untuk tujuan ini.
<td style="display:none;">
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
atau td
) selalu merupakan elemen turunan ke-N dari barisnya.
Jika Anda ingin nomor kolom menjadi dinamis, Anda dapat melakukannya menggunakan querySelectorAll
atau kerangka kerja apa pun yang menyajikan fungsionalitas serupa, seperti di jQuery
sini:
$('#myTable tr > *:nth-child(2)').hide();
(Solusi jQuery juga berfungsi pada browser lama yang tidak mendukungnth-child
).
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.
visibility: collapse
dirancang khusus untuk menangani sel yang menunjukkan / menyembunyikan, karena ada perbedaan saat menghitung ulang lebar / tinggi sel antara ini dan display:none
. Lihat developer.mozilla.org/en-US/docs/Web/CSS/visibility#Values
Jawaban 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 pertama td
dari setiap tr
DAN menyembunyikan elemen pertama dari semua td
anak. Jika salah satu dari Anda td
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
dan th
pada semua tr
di #myTable
menjaga elemen lain yang aman.
Orang-orang bootstrap menggunakan .hidden
kelas di <td>
.
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
<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.
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.
<!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);