Datatables colspan标头

时间:2016-11-15 07:27:39

标签: jquery datatables

我有这样的表

<table id="tbl_orderstatus" class="dataTable table table-bordered table-hover table-full-width nowrap" width="150%" data-table="tblorderstatus">
    <thead>
        <tr>
            <th>Buyer</th>
            <th>Season</th>
            <th>Style#</th>
            <th>KP#</th>
            <th>Item Description</th>
            <th>Buyer PO</th>
            <th colspan="2">Qty</th>
            <th>Material</th>
            <th>Destination</th>
            <th>Delivery Date</th>
        </tr>
    </thead>
</table>

但是我的问题是,我只是把<th colspan="2">Qty</th>弄错了,它说没有未加工的风格。我怎么做这样的clospan?因为我需要在数量上放置2个数据列。

tq for answer,我打赌我必须在标题上使用两行。 tQ家伙:)

3 个答案:

答案 0 :(得分:1)

这是一个老线程但仍然 - 我想分享我在自己项目中提出的建议。我基本上需要相同的东西 - 我想跨越3列的标题而不加强它,将它保持在一行。

您看到了错误,因为jQuery DataTables希望每个字段都有一个列来分配处理程序或其他任何内容。我们可以通过添加另一个标题列来消除错误,其中包含您希望跨越的标题列数。就我而言,我添加了3个标题列。

现在,错误消失但标题看起来很可怕。看起来没必要,但将所有其他顶行标题列设置为跨越2行(rowspan)。 而现在,“魔术” - 作为我们的第二行标题列不包含任何信息,只需隐藏它们!

$(document).ready(function() {
    $('#example').DataTable();
});
<script
  src="https://code.jquery.com/jquery-3.2.1.js"
  integrity="sha256-DZAnKJ/6XZ9si04Hgrsxu/8s717jcIzLy3oi35EouyE="
  crossorigin="anonymous"></script>
<script src="https://cdn.datatables.net/1.10.15/js/jquery.dataTables.min.js"></script>
<link href="https://cdn.datatables.net/1.10.15/css/jquery.dataTables.min.css" rel="stylesheet"/>

<table id="example" class="display" cellspacing="0" width="100%" style="text-align: center;">
    <thead>
        <tr>
            <th rowspan="2">One</th>
            <th colspan="2">Two and Three</th>
            <th rowspan="2">Four</th>
            <th rowspan="2">Five</th>
        </tr>
        <tr style="display:none">
            <th></th>
            <th></th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td> First data </td>
            <td> Second data </td>
            <td> Third data </td>
            <td> Fourth data </td>
            <td> Fifth data </td>
        </tr>
    </tbody>
</table>

瞧。这是我可以制作的最干净的解决方法,但它会这样做。

答案 1 :(得分:0)

我测试过,它正在运行。也许你忘记在这里添加一个<td></td>输入代码

<table id="tbl_orderstatus" class="dataTable table table-bordered table-hover table-full-width nowrap" width="150%" data-table="tblorderstatus">
        <thead>
            <tr>
                <th>Buyer</th>
                <th>Season</th>
                <th>Style#</th>
                <th>KP#</th>
                <th>Item Description</th>
                <th>Buyer PO</th>
                <th colspan="2">Qty</th>
                <th>Material</th>
                <th>Destination</th>
                <th>Delivery Date</th>
            </tr>
        </thead>
        <tr>
            <td>Test</td>
            <td>Test</td>
            <td>Test</td>
            <td>Test</td>
            <td>Test</td>
            <td>Test</td>
            <td>Test 1</td>
            <td>Test 2</td>
            <td>Test</td>
            <td>Test</td>
            <td>Test</td>
        </tr>
   </table>

答案 2 :(得分:0)

您需要为每一行添加标题,因此您的标题应该是这样的:

               <thead>
                    <tr>
                        <th rowspan="2">Buyer</th>
                        <th rowspan="2">Season</th>
                        <th rowspan="2">Style#</th>
                        <th rowspan="2">KP#</th>
                        <th rowspan="2">Item Description</th>
                        <th rowspan="2">Buyer PO</th>
                        <th colspan="2">Qty</th>
                        <th rowspan="2">Material</th>
                        <th rowspan="2">Destination</th>
                        <th rowspan="2">Delivery Date</th>
                    </tr>
                    <tr>
                        <th>Qty 1</th>
                        <th>Qty 2</th>
                    </tr>
                </thead>

            </table>