如何强制响应数据表显示多于6列?

时间:2019-03-23 02:24:11

标签: jquery datatables bootstrap-4

我正在使用7列的响应式数据表。看到它在其模板内(它是较大的表):http://darasu.xyz/DatatableExample/datatable-ex.html

我正在使用的是从这里: https://datatables.net/extensions/fixedheader/examples/integration/responsive-bootstrap.html

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

似乎只允许跨越6列。如果在较小的视口上观看,则第7行将被强制使用自己的可扩展行。 如何在台式机上查看所有行,但在较小的查看端口上保持响应? 如果是jQuery数据表,默认的6列是默认值吗?如果可以,我可以将其更改为7列吗?

在阅读了数据表文档之后,我尝试了各种类来更改断点,如下所示:https://datatables.net/extensions/responsive/classes

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

我使用这些选项获取所需桌面表格的次数越多,在较小的视口上显示效果越差。

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

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

然后分配表引导程序类,这些类将我的表隐藏在较小的视口中:“ d-none d-xl-block d-lg-block”,然后添加第二个响应表,该表隐藏在具有类的桌面上: -lg-n d-xl-none”。它起作用了,但是我的边界在视觉上被“ block”类弄乱了,所以它不可用。 (请参阅: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>
$(document).ready(function() {
    var table = $('#condolistings').DataTable( {
        responsive: true,
        "paging":   false,
        "searching": false,
        "info":     false
    } );

    new $.fn.dataTable.FixedHeader( table );
} );

从Bootstrap 4中提取的CSS文件。

1 个答案:

答案 0 :(得分:0)

根据official documentation

  

响应式具有三种操作模式,用于控制表中列的可见性:

     
      
  • 自动-响应式将自动确定是否应显示一列
  •   
  • 手册-您可以在其中告诉响应式在哪些屏幕尺寸上显示哪些列。
  •   
  • 优先级-使用columns.responsivePriority告诉响应式哪些列应被赋予可见性优先级。
  •   

当您不为列分配类时,DataTables将自动确定是否应显示列。因此,如果要强制在较大的屏幕上显示所有列,则需要为所有列分配类(desktopmin-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>

有关代码和演示,请参见this example