标题/数据列未与 jQuery dataTables、bootstrap 2.3.2 对齐并启用水平滚动

Posted

技术标签:

【中文标题】标题/数据列未与 jQuery dataTables、bootstrap 2.3.2 对齐并启用水平滚动【英文标题】:header/data columns are not aligned with jQuery dataTables, bootstrap 2.3.2 and horizontal scrolling enabled 【发布时间】:2013-10-21 03:31:50 【问题描述】:

使用 dataTables 启用水平滚动并使用 bootstrap 2.3.2 会导致标题和数据列对齐不同步 - dataTables 使用两个单独的表来提供水平滚动。

看这个例子: html

<html>
<body>
<div class="container">
    <div class="row">
        <div class="span12">
            <table id="teamTable" class="table table-striped table-bordered">
                <thead>
                    <tr>
                        <th>Team Member</th>
                        <th>Balancing Team &amp; Individual Priorities</th>
                        <th>Conscientiousness</th>
                        <th>Relating to Others</th>
                        <th>Preference for Teamwork</th>
                        <th>Problem Solving</th>
                        <th>Effort</th>
                        <th>Relying on Others</th>
                        <th>Balancing Work Tasks &amp; Relationships</th>
                        <th>Work Life Balance</th>
                        <th>Assertiveness</th>
                        <th>Time Urgency</th>
                        <th>Pacing Style</th>
                        <th>Resolving Conflict</th>
                        <th>Avoiding Judgement</th>
                        <th>Seeking Approval</th>
                        <th>Learning</th>
                    </tr>
                </thead>
                <tbody id="tableBody">
                    <tr>
                        <td>Alexandra Slater</td>
                        <td><p><a href="#">Team Focus</a></p></td>
                        <td><p><a href="#">Preparer</a></p></td>
                        <td><p><a href="#">Relationship Prioritizer</a></p></td>
                        <td><p><a href="#">Balanced Worker</a></p></td>
                        <td><p><a href="#">Enthusiastic Theorist</a></p></td>
                        <td><p><a href="#">Marathon Runner</a></p></td>
                        <td><p><a href="#">Three Musketeer</a></p></td>
                        <td><p><a href="#">Relationship Builder</a></p></td>
                        <td><p><a href="#">Work-Life Balancer</a></p></td>
                        <td><p><a href="#">Behind The Scenes</a></p></td>
                        <td><p><a href="#">Measured Progresser</a></p></td>
                        <td><p><a href="#">Last Minute</a></p></td>
                        <td><p><a href="#">Adaptor</a></p></td>
                        <td><p><a href="#">Hidden Light</a></p></td>
                        <td><p><a href="#">Diamond</a></p></td>
                        <td><p><a href="#">Eternal Student</a></p></td>
                    </tr>
                    <tr>
                        <td>MIKE FEENEY</td>
                        <td><p><a href="#">Team Balancer</a></p></td>
                        <td><p><a href="#">Work Horse</a></p></td>
                        <td><p><a href="#">Relationship Prioritizer</a></p></td>
                        <td><p><a href="#">Balanced Worker</a></p></td>
                        <td><p><a href="#">Enthusiastic Theorist</a></p></td>
                        <td><p><a href="#">Marathon Runner</a></p></td>
                        <td><p><a href="#">Independent</a></p></td>
                        <td><p><a href="#">Relationship Builder</a></p></td>
                        <td><p><a href="#">Work-Life Balancer</a></p></td>
                        <td><p><a href="#">Part of the Cast</a></p></td>
                        <td><p><a href="#">Sprinter</a></p></td>
                        <td><p><a href="#">Last Minute</a></p></td>
                        <td><p><a href="#">Persuader</a></p></td>
                        <td><p><a href="#">Revealer</a></p></td>
                        <td><p><a href="#">Sparkler</a></p></td>
                        <td><p><a href="#">Eternal Student</a></p></td>
                    </tr>
                    <tr>
                        <td>Gary Crowe</td>
                        <td><p><a href="#">Team Balancer</a></p></td>
                        <td><p><a href="#">Preparer</a></p></td>
                        <td><p><a href="#">Relationship Prioritizer</a></p></td>
                        <td><p><a href="#">Team Player</a></p></td>
                        <td><p><a href="#">Enthusiastic Theorist</a></p></td>
                        <td><p><a href="#">Marathon Runner</a></p></td>
                        <td><p><a href="#">Double Checker</a></p></td>
                        <td><p><a href="#">Relationship Builder</a></p></td>
                        <td><p><a href="#">Work-Life Balancer</a></p></td>
                        <td><p><a href="#">Part of the Cast</a></p></td>
                        <td><p><a href="#">Measured Progresser</a></p></td>
                        <td><p><a href="#">Steady</a></p></td>
                        <td><p><a href="#">Adaptor</a></p></td>
                        <td><p><a href="#">Revealer</a></p></td>
                        <td><p><a href="#">Sparkler</a></p></td>
                        <td><p><a href="#">Eternal Student</a></p></td>
                    </tr>
                    <tr>
                        <td>Josh Rammell</td>
                        <td><p><a href="#">Team Focus</a></p></td>
                        <td><p><a href="#">Preparer</a></p></td>
                        <td><p><a href="#">Go with the Flow</a></p></td>
                        <td><p><a href="#">Team Player</a></p></td>
                        <td><p><a href="#">Enthusiastic Theorist</a></p></td>
                        <td><p><a href="#">Marathon Runner</a></p></td>
                        <td><p><a href="#">Double Checker</a></p></td>
                        <td><p><a href="#">Relationship Builder</a></p></td>
                        <td><p><a href="#">Work-Life Balancer</a></p></td>
                        <td><p><a href="#">Behind The Scenes</a></p></td>
                        <td><p><a href="#">Measured Progresser</a></p></td>
                        <td><p><a href="#">Last Minute</a></p></td>
                        <td><p><a href="#">Persuader</a></p></td>
                        <td><p><a href="#">Revealer</a></p></td>
                        <td><p><a href="#">Diamond</a></p></td>
                        <td><p><a href="#">Eternal Student</a></p></td>
                    </tr>
                    <tr>
                        <td>Luke Uijtenhaak</td>
                        <td><p><a href="#">Team Focus</a></p></td>
                        <td><p><a href="#">Preparer</a></p></td>
                        <td><p><a href="#">Relationship Prioritizer</a></p></td>
                        <td><p><a href="#">Team Player</a></p></td>
                        <td><p><a href="#">Reluctant Philosopher</a></p></td>
                        <td><p><a href="#">Marathon Runner</a></p></td>
                        <td><p><a href="#">Three Musketeer</a></p></td>
                        <td><p><a href="#">Relationship Builder</a></p></td>
                        <td><p><a href="#">Work-Life Balancer</a></p></td>
                        <td><p><a href="#">Behind The Scenes</a></p></td>
                        <td><p><a href="#">Measured Progresser</a></p></td>
                        <td><p><a href="#">Last Minute</a></p></td>
                        <td><p><a href="#">Persuader</a></p></td>
                        <td><p><a href="#">Revealer</a></p></td>
                        <td><p><a href="#">Diamond</a></p></td>
                        <td><p><a href="#">Eternal Student</a></p></td>
                    </tr>
                </tbody>
            </table>
        </div>
    </div>
</div>
</body>
</html>

JS:

        var tableId = 'teamTable';

        var oTable = $('#' + tableId).dataTable(
            "sScrollX": "100%",
               <!--  "sScrollXInner": "150%", -->
                "bScrollCollapse": true,
                "bPaginate": false
        );

    <!--    new FixedColumns(oTable); -->

这是 JSFiddle 上的测试用例,http://jsfiddle.net/tazmaniax/KFxbL/,以及相关的调试信息http://debug.datatables.net/unovum

在这个测试用例中,我使用了数据表 1.9.4 和最新的数据表引导 css 和 js 文件 (https://github.com/DataTables/Plugins/tree/master/integration/bootstrap/2)。我还用 dataTables 1.10 进行了测试,没有任何改进。

最终我还想启用 "sScrollXInner": "150%" 和 FixedColumns,但这样做只会让事情变得更糟。

我已将其交叉发布到 dataTables 论坛,http://datatables.net/forums/discussion/comment/52776#Comment_52776

2013 年 15 月 10 日更新:

显然,问题归结为 M30 分支中 Chrome 中的一个错误,该错误是作为优化的一部分引入的。现在正在分发修复程序。 见http://datatables.net/forums/discussion/17714#Item_15 见https://code.google.com/p/chromium/issues/detail?id=290399

【问题讨论】:

我在加载你的小提琴时没有看到问题。标题和数据一起滚动。 OSX 10.8.5 上的 Chrome。 这里看起来也不错 - chrome、FF 和 opera。 @Daiku 感谢您检查小提琴,您使用的是哪个版本的 Chrome? @davidkonrad 您使用的是什么操作系统和 Chrome 版本?谢谢 ubuntu 和 chrome 版本 18.0.1025.168 【参考方案1】:

我在同样的问题上苦苦挣扎,在阅读了很多帖子后,这里是如何“解决”问题的。

添加到 CSS 中:

.scrollStyle overflow-x:auto;

调用dataTable后在视图中添加:

jQuery('.dataTable').wrap('&lt;div class="scrollStyle" /&gt;');

例如。 oTable = $('#myDataTable').dataTable( );

$(window).bind('resize', function () 
oTable.fnAdjustColumnSizing();
);
jQuery('.dataTable').wrap('<div class="scrollStyle" />');

【讨论】:

以上是关于标题/数据列未与 jQuery dataTables、bootstrap 2.3.2 对齐并启用水平滚动的主要内容,如果未能解决你的问题,请参考以下文章

Jquery DataTable列顺序未与固定标题对齐[重复]

JQuery DataTable 标头未与 ScrollY 和服务器端处理对齐

jquery datatables 列未正确排序

s-s-rs 报告列未与标题对齐

[将数据导出到CSV时如何获取DataTable列名?

JQuery DataTable 插件宽度问题