Son zamanlarda benzer bir sorun yaşadım ve farklı çözümlerin bir karışımını kullanarak düzelttim.
İlk ve en basit olanı, biri üstbilgi diğeri de gövde için olmak üzere iki tablo kullanmaktı. Bu işe yarar, ancak üstbilgiler ve gövde sütunları hizalanmamıştır. Ve twitter bootstrap tabloları ile birlikte gelen otomatik boyutu kullanmak istediğimden, ne zaman başlıklarını değiştiren bir Javascript işlevi oluşturdum: gövde işlendi; pencereler yeniden boyutlandırılır; sütundaki veriler değişir vb.
İşte kullandığım kod bazıları:
<table class="table table-striped table-hover" style="margin-bottom: 0px;">
<thead>
<tr>
<th data-sort="id">Header 1</i></th>
<th data-sort="guide">Header 2</th>
<th data-sort="origin">Header 3</th>
<th data-sort="supplier">Header 4</th>
</tr>
</thead>
</table>
<div class="bodycontainer scrollable">
<table class="table table-hover table-striped table-scrollable">
<tbody id="rows"></tbody>
</table>
</div>
Başlıklar ve gövde iki ayrı tabloya ayrılmıştır. Bunlardan biri, dikey kaydırma çubukları oluşturmak için gerekli stile sahip bir DIV'nin içindedir. İşte kullandığım CSS:
.bodycontainer {
//height: 200px
width: 100%;
margin: 0;
}
.table-scrollable {
margin: 0px;
padding: 0px;
}
Burada yüksekliği yorumladım çünkü sayfa yüksekliği ne olursa olsun tablonun sayfanın altına ulaşmasını istedim.
Üstbilgilerde kullandığım veri sıralama nitelikleri her td'de de kullanılır. Bu şekilde her td'nin genişliğini ve dolgusunu ve sıranın genişliğini alabilirdim. CSS kullanarak ayarladığım veri sıralama niteliklerini kullanarak, her bir başlığın ve bir kaydırma çubuğuna sahip olmadığı için her zaman daha büyük olan başlık satırının dolgusu ve genişliği. İşte coffeescript kullanan fonksiyon:
fixHeaders: =>
for header, i in @headers
tdpadding = parseInt(@$("td[data-sort=#{header}]").css('padding'))
tdwidth = parseInt(@$("td[data-sort=#{header}]").css('width'))
@$("th[data-sort=#{header}]").css('padding', tdpadding)
@$("th[data-sort=#{header}]").css('width', tdwidth)
if (i+1) == @headers.length
trwidth = @$("td[data-sort=#{header}]").parent().css('width')
@$("th[data-sort=#{header}]").parent().parent().parent().css('width', trwidth)
@$('.bodycontainer').css('height', window.innerHeight - ($('html').outerHeight() -@$('.bodycontainer').outerHeight() ) ) unless @collection.length == 0
Burada @headers adlı başlıkların bir dizi olduğunu varsayalım.
Güzel değil ama işe yarıyor. Umarım birine yardımcı olur.