如何强制响应数据表显示超过 6 列?

lee*_*old 1 jquery datatables bootstrap-4

我正在使用具有 7 列的响应式数据表。在其模板中查看它(它是更大的表格):http : //darasu.xyz/DatatableExample/datatable-ex.html

我正在使用的一个来自这里:https : //datatables.net/extensions/fixedheader/examples/integration/responsive-bootstrap.html

我希望所有列始终显示在桌面上。它有可行的空间,而且我不喜欢默认显示的可扩展“+”按钮。

它似乎只允许跨越 6 列。第 7 行被迫拥有自己的可扩展行,就像在较小的视口上查看一样。在桌面上查看时如何使所有行可见,但在较小的视口上保持响应?6 列是 jQuery 数据表中的默认值吗?如果是这样,我可以将其更改为 7 吗?如何更改?

阅读数据表文档后,我尝试了不同的类来改变断点,如下所示:https : //datatables.net/extensions/responsive/classes

这是一个挑战,因为在我在台式机上获得所需的表后,该表会在较小的视口中调整我不想要的行为。示例:类“all”将强制第 7 列在所有屏幕上可见,这是我不想要的。“min-desktop”将强制第 7 列在台式机或更大的桌面上可见,但会隐藏另一列以进行补偿。对于其他断点类或数据优先级选项也可以这样说:https : //datatables.net/extensions/responsive/priority

我越多地使用这些选项来获得我想要的桌面,它在较小的视口上看起来就越糟糕。

我尝试过花哨的解决方法,例如强制显示所有数据:

$(document).ready(function() {
    var table = $('#condolistings').DataTable( {
        responsive: {
            details: false
        }
    } );
Run Code Online (Sandbox Code Playgroud)

然后分配将我的表隐藏在较小视口中的表引导程序类:“d-none d-xl-block d-lg-block”,然后添加第二个响应表,该表隐藏在带有类的桌面上:“d-lg-无 d-xl-无”。它起作用了,但我的边框在视觉上被“块”类弄乱了,所以它不可用。(参见:https : //i.imgur.com/hIfHUfz.png

代码:

<table id="condolistings" class="table table-bordered datatable-font nowrap" style="width:100%;">
                    <thead>
                        <tr>
                            <th><strong>Unit</strong></th>
                            <th><strong># Bed</strong></th>
                            <th><strong># Bath</strong></th>
                            <th><strong>Sq Ft</strong></th>
                            <th><strong>Price</strong></th>
                            <th><strong>Brokerage</strong></th>
                            <th><strong>Favourite?</strong></th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr>
                            <td>#703</td>
                            <td>2</td>
                            <td>2</td>
                            <td>743</td>
                            <td>$628,000</td>
                            <td>Luxmore Realty</td>
                            <td><a class="colored-link" href="#">Add</a></td>
                        </tr>
                        <tr>
                            <td>#602</td>
                            <td>2</td>
                            <td>2</td>
                            <td>827</td>
                            <td>$649,000</td>
                            <td>Macdonald Realty Westmar</td>
                            <td><a class="colored-link" href="#">Add</a></td>
                        </tr>
                        <tr>
                            <td>#1502</td>
                            <td>2</td>
                            <td>2</td>
                            <td>1103</td>
                            <td>$849,000</td>
                            <td>Coldwell Banker Westburn Rlty</td>
                            <td><a class="colored-link" href="#">Add</a></td>
                        </tr>
                        <tr>
                            <td>#1701</td>
                            <td>3</td>
                            <td>2</td>
                            <td>1265</td>
                            <td>$978,000</td>
                            <td>Regent Park Realty Inc.</td>
                            <td><a class="colored-link" href="#">Add</a></td>
                        </tr>
                        <tr>
                            <td>#2402</td>
                            <td>3</td>
                            <td>3</td>
                            <td>1637</td>
                            <td>$1,308,000</td>
                            <td>RE/MAX Central</td>
                            <td><a class="colored-link" href="#">Add</a></td>
                        </tr>
                    </tbody>
                </table>
Run Code Online (Sandbox Code Playgroud)
$(document).ready(function() {
    var table = $('#condolistings').DataTable( {
        responsive: true,
        "paging":   false,
        "searching": false,
        "info":     false
    } );

    new $.fn.dataTable.FixedHeader( table );
} );
Run Code Online (Sandbox Code Playgroud)

从 Bootstrap 4 中提取的 CSS 文件。

Gyr*_*com 6

根据官方文档

Responsive 有三种操作模式来控制表中列的可见性:

  • 自动 - 响应式将自动确定是否应显示列
  • 手动 - 您告诉 Responsive 在什么屏幕尺寸上显示什么列。
  • Priority -columns.responsivePriority用于告诉 Responsive 哪些列应该被赋予可见性优先级。

当您不为列分配类时,DataTables 将自动确定是否应显示列。因此,如果您想强制在更大的屏幕上显示所有列,则需要为所有列分配类(desktop,min-desktopall)。

我认为在较小的屏幕上切换到自动模式没有什么好方法,因此您需要考虑要在较小的屏幕上显示哪些列并使用适当的类。

例如,使用以下标记,前三列将在所有设备上显示,最后三列将在桌面 (>1024px) 设备上显示。

<thead>
    <tr>
        <th class="all">Name</th>
        <th class="all">Position</th>
        <th class="all">Office</th>
        <th class="desktop">Age</th>
        <th class="desktop">Start date</th>
        <th class="desktop">Salary</th>
    </tr>
</thead>
Run Code Online (Sandbox Code Playgroud)

有关代码和演示,请参阅此示例