I work with a table, which is built dynamically, and I have a problem.
The table is scrollable, and columns and row are built dynamically, and I want to fix header so just table body is scrollable.
I tried to use some methods but it does not work for me:
var templateName = ["Name", "Value", "Upper", "Lower", "Description"];
var mockData = [{
"Name": "Working heads quantity",
"Value": "12",
"Upper": "-",
"Lower": "-",
"New col": "test",
"Description": "Some Description here"
},
{
"Name": "Upper thread tension",
"Value": "-",
"Upper": "210 +/- 10",
"Lower": "20 +/- 5",
"Description": "Some Description here"
},
{
"Name": "Botom thread tension",
"Value": "-",
"Upper": "55 +/- 5",
"Lower": "55 +/- 5",
"Description": "Some Description here"
},
{
"Name": "Frames per 1 spool",
"Value": "5",
"Upper": "-",
"Lower": "-",
"Description": "Some Description here"
},
{
"Name": "Type",
"Value": "1",
"Upper": "-",
"Lower": "-",
"Description": "Some Description here"
},
{
"Name": "Speed",
"Value": "300",
"Upper": "-",
"Lower": "-",
"Description": "Some Description here"
},
{
"Name": "Tracing",
"Value": "64",
"Upper": "-",
"Lower": "-",
"Description": "Some Description here"
},
{
"Name": "Tracing",
"Value": "64",
"Upper": "-",
"Lower": "-",
"Description": "Some Description here"
},
{
"Name": "Tracing",
"Value": "64",
"Upper": "-",
"Lower": "-",
"Description": "Some Description here"
}
];
function buildHtmlTable() {
var columns = addAllColumnHeaders(mockData, '#parameter-table');
for (var i = 0; i < mockData.length; i++) {
var row$ = $('<tr/>');
for (var colIndex = 0; colIndex < columns.length; colIndex++) {
var cellValue = mockData[i][columns[colIndex]];
if (cellValue == null) cellValue = "";
row$.append($('<td/>').html(cellValue));
}
$('#parameter-table').append(row$);
}
}
function addAllColumnHeaders(data, selector) {
var columnSet = [];
var headerTr$ = $('<tr/>');
for (var i = 0; i < data.length; i++) {
var rowHash = data[i];
for (var key in rowHash) {
if ($.inArray(key, columnSet) == -1) {
columnSet.push(key);
headerTr$.append($('<th/>').html(key));
}
}
}
$(selector).append(headerTr$);
return columnSet;
}
buildHtmlTable();
#scrolltable {
margin-top: 10px;
width: 100%;
height: 500px;
overflow: auto;
overflow-x: hidden;
overflow-y: scroll;
}
#scrolltable th div {
position: absolute;
margin-top: -20px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="scrolltable">
<table id="parameter-table">
<thead id="table-header-parameter" class="header">
</thead>
<tbody id="table-body-data"></tbody>
</table>
</div>
So i wiil try to explain one more time.
I build table from jQuery script, and header build like row, and maybe because lot of scripts not working for me.