I found @dimark’s solution hid the contents of the table header cells, but a 30px high (empty) table row was still rendered in the space where the header would have been.
Instead, if you want the upper and lower tables to sit flush against each other, try the following approach using the DataTable css parameter. This approach uses @dimark’s css rule but applies it to the first table row:
css=[
{
'selector': 'tr:first-child',
'rule': 'display: none',
},
],
