मुझे हाल ही में एक समान समस्या थी और विभिन्न समाधानों के मिश्रण का उपयोग करके इसे ठीक करना समाप्त हुआ।
पहला और सबसे सरल एक दो तालिकाओं का उपयोग करना था, एक हेडर के लिए और दूसरा शरीर के लिए। यह काम करता है लेकिन हेडर और बॉडी कॉलम संरेखित नहीं हैं। और, जब से मैं ट्विटर बूटस्ट्रैप टेबलों के साथ आने वाले ऑटो-आकार का उपयोग करना चाहता था, मैंने एक जावास्क्रिप्ट फ़ंक्शन बनाया जो हेडर को बदलता है: जब शरीर का प्रतिपादन किया जाता है; खिड़कियों का आकार बदल दिया गया है; स्तंभ में डेटा बदल जाता है, आदि।
यहाँ कुछ कोड का उपयोग किया गया है:
<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>
हेडर और बॉडी को दो अलग-अलग टेबल में बांटा गया है। उनमें से एक ऊर्ध्वाधर स्क्रॉलबार्स उत्पन्न करने के लिए आवश्यक शैली के साथ एक डीआईवी के अंदर है। यहाँ सीएसएस मैं इस्तेमाल किया है:
.bodycontainer {
//height: 200px
width: 100%;
margin: 0;
}
.table-scrollable {
margin: 0px;
padding: 0px;
}
मैंने यहाँ ऊँचाई पर टिप्पणी की क्योंकि मुझे पृष्ठ के निचले भाग तक पहुँचने के लिए तालिका चाहिए थी, जो भी पृष्ठ की ऊँचाई हो सकती है।
हेडर में मेरे द्वारा उपयोग किए जाने वाले डेटा-सॉर्ट विशेषताएँ भी प्रत्येक td में उपयोग की जाती हैं। इस तरह मुझे चौड़ाई और हर td की पैडिंग और पंक्ति की चौड़ाई मिल सकती है। डेटा-सॉर्ट विशेषताओं का उपयोग करके मैंने सीएसएस का उपयोग करके प्रत्येक हेडर की पैडिंग और चौड़ाई का उपयोग किया है और हेडर पंक्ति जो हमेशा बड़ा होता है क्योंकि इसमें स्क्रॉल नहीं होता है। यहां कॉफ़ीस्क्रिप्ट का उपयोग करने वाला फ़ंक्शन है:
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
यहाँ मैं मानता हूँ कि आपके पास हेडर्स की एक सरणी है, जिसे @ हेडर्स कहा जाता है।
यह सुंदर नहीं है, लेकिन यह काम करता है। आशा है कि यह किसी की मदद करता है।