更新表时,数据表标题收缩

时间:2017-12-15 19:29:50

标签: jquery html datatables

我对“DataTable”表有疑问。刷新/更新表时,标题未对齐。示例如下图所示。

该表在开头初始化,并放在下拉字段中。然后使用清除,更新表和绘制表的函数进行更新。如果正在更新表格并按下显示放置在哪个表格中的下拉列表的按钮,则会出现图像波动的情况。更新后,标题会自动更正为正常宽度。

enter image description here

HTML部分:

<table id="mainTable" class="dataTable" style="width:100%;">
    <thead bgcolor="#fd7e14" class="maintablehead">
        <th>Coin</th>
        <th>Vol</th>
        <th>% Change</th>
        <th>Last price</th>
    </thead>
    <tbody id="mainTableBody">
    </tbody>
</table>

表声明部分:

var a = $('#mainTable').DataTable({
data: dataInput,
columns: [
    { data: "symbol" },
    { data: "vol" },
    { data: "change"},
    { data: "price" }
],
"columnDefs": [
    { "type": "any-number", targets: 1 },
    { "type": "any-number", targets: 2 },
    { "type": "any-number", targets: 3 },
    { "className": "dt-center", "targets": "_all" },
    {
        targets:2, render: function ( data, type, row ) {
            var color = 'black';
            if (data > 0) {
                color = 'green';
            } 
            if (data < 0) {
                color = 'red';
            }
            if (data == 0) {
                color = 'black';
            }
            return '<span style="color:' + color + '">' + data + '</span>';
            }
    }
],
"paging": false,
"info": false,
"order": [[0, "desc"]],
"scrollY": "400px",
"scrollCollapse": false,
"auto-width": true,
"fixedHeader": true,
"language": {
    "zeroRecords": "No symbol found on selected exchange",
    "search": "Enter symbol:",
},
"initComplete": function () {
    $(document).on("click", " #mainTable tbody tr[role='row']", function () {
        var id = $(this).children('td:first-child').text();
        document.getElementById("coin-name").innerHTML = id;
        widget.onChartReady(function () {
            var chart = widget.activeChart();
            chart.setSymbol(id);
        })
    });
},
});

我使用以下代码每10秒刷新一次表。

var datatable = $('#mainTable').dataTable().api();
datatable.clear();
datatable.rows.add(dataInput);
datatable.columns.adjust().draw(false);

如何防止这种情况发生?我在数据论坛中搜索并尝试了很多解决方案,但没有任何效果。将thead的宽度设置为100%不起作用。

我正在使用2张桌子,两者都有同样的问题。

4 个答案:

答案 0 :(得分:0)

尝试datatable.empty()而不是清除。这看起来像是重置了所有元素属性。

答案 1 :(得分:0)

由于您使用带有scrollY选项的Scroller扩展程序,因此请使用scroller.measure() API方法代替columns.adjust()

var datatable = $('#mainTable').DataTable();
datatable.clear();
datatable.rows.add(dataInput);
datatable.scroller.measure().draw(false);

答案 2 :(得分:0)

注释掉代码中的任何scrollY / scrollX或sScrollX / sScrollY并交换“ scrollCollapse”:false,与“ bScrollCollapse”:true,我认为您不需要使用 “自动宽度”:true, “ fixedHeader”:是的,此后,希望它能起作用:D祝你好运!

答案 3 :(得分:0)

我正在与这个错误作斗争(实际上认为这是一个错误),最后找到了可能的解决方案。

如果您可以按列排序,则在获得要显示的全部行后,只需使用html DOM单击任何标题元素(来自dataTable)即可。

let element = document.querySelector('th');
element.click();