dataTables - 无法使用水平滚动和固定列来完成其工作。似乎到处渲染都不同。我做错了什么?

问题描述 投票:0回答:3

我花了几个小时试图解决这个问题。我需要制作一张与此链接中显示的表格几乎相同的表格:

https://datatables.net/extensions/fixedcolumns/

它可以垂直和水平滚动,同时保持一列固定在侧面。最终,我希望修复右列而不是左列,但这并不是我目前真正的问题。

我的问题是,尽管有功能性的 .js,它对列进行排序并且几乎完成了它应该做的所有事情,甚至使用相同的 CSS,中间的容器(应该水平滚动的容器)也没有。垂直滚动效果很好。它在示例中显然有效,一旦表构建完毕,.js 几乎应该处理所有事情。现在,我只想让它工作,然后再尝试从左列切换到右列。如果你能同时帮助我,那就更好了,但正如我所说,这不是目前最重要的事情。

http://jsfiddle.net/biggest/WCpYx/6/

//jquery
$(document).ready( function () {
var oTable = $('#example').dataTable( {
    "sScrollY": "300px",
    "sScrollX": "100%",
    "sScrollXInner": "150%",
    "bScrollCollapse": true,
    "bPaginate": false
} );
new FixedColumns( oTable );
} );

//HTML
<div id="container" style="width: 700px;">
<table cellpadding="0" cellspacing="0" border="0" class="display" id="example">
<thead>
    <tr>
        <th>Rendering engine</th>
        <th>Browser</th>
        <th>Platform(s)</th>
        <th>Engine version</th>
        <th>CSS grade</th>
    </tr>
</thead>
<tfoot>
    <tr>
        <th>Rendering engine</th>
        <th>Browser</th>
        <th>Platform(s)</th>
        <th>Engine version</th>
        <th>CSS grade</th>
    </tr>
</tfoot>
<tbody>
    <tr class="gradeX">
        <td>Trident</td>
        <td>Internet Explorer 4.0</td>
        <td>Win 95+</td>
        <td class="center">4</td>
        <td class="center">X</td>

    </tr>
    <tr class="gradeC">
        <td>Trident</td>
        <td>Internet Explorer 5.0</td>
        <td>Win 95+</td>
        <td class="center">5</td>
        <td class="center">C</td>

    </tr>
    <tr class="gradeA">
        <td>Trident</td>
        <td>Internet Explorer 5.5</td>
        <td>Win 95+</td>
        <td class="center">5.5</td>
        <td class="center">A</td>

    </tr>
    <tr class="gradeA">
        <td>Trident</td>
        <td>Internet Explorer 6</td>
        <td>Win 98+</td>
        <td class="center">6</td>
        <td class="center">A</td>

    </tr>
    <tr class="gradeA">
        <td>Trident</td>
        <td>Internet Explorer 7</td>
        <td>Win XP SP2+</td>
        <td class="center">7</td>
        <td class="center">A</td>
    </tr>
    <tr class="gradeA">
        <td>Trident</td>
        <td>AOL browser (AOL desktop)</td>
        <td>Win XP</td>
        <td class="center">6</td>
        <td class="center">A</td>
    </tr>
    <tr class="gradeA">
        <td>Gecko</td>
        <td>Firefox 1.0</td>
        <td>Win 98+ / OSX.2+</td>
        <td class="center">1.7</td>
        <td class="center">A</td>
    </tr>
    <tr class="gradeA">
        <td>Gecko</td>
        <td>Firefox <br>1.5</td>
        <td>Win 98+ / OSX.2+</td>
        <td class="center">1.8</td>
        <td class="center">A</td>
    </tr>
    <tr class="gradeA">
        <td>Gecko</td>
        <td>Firefox 2.0</td>
        <td>Win 98+ / OSX.2+</td>
        <td class="center">1.8</td>
        <td class="center">A</td>
    </tr>
    <tr class="gradeA">
        <td>Gecko</td>
        <td>Firefox 3.0</td>
        <td>Win 2k+ / OSX.3+</td>
        <td class="center">1.9</td>
        <td class="center">A</td>
    </tr>
    <tr class="gradeA">
        <td>Gecko</td>
        <td>Camino 1.0</td>
        <td>OSX.2+</td>
        <td class="center">1.8</td>
        <td class="center">A</td>
    </tr>
    <tr class="gradeA">
        <td>Gecko</td>
        <td>Camino 1.5</td>
        <td>OSX.3+</td>
        <td class="center">1.8</td>
        <td class="center">A</td>
    </tr>
    <tr class="gradeA">
        <td>Gecko</td>
        <td>Netscape 7.2</td>
        <td>Win 95+ / Mac OS 8.6-9.2</td>
        <td class="center">1.7</td>
        <td class="center">A</td>
    </tr>
    <tr class="gradeA">
        <td>Gecko</td>
        <td>Netscape Browser 8</td>
        <td>Win 98SE+</td>
        <td class="center">1.7</td>
        <td class="center">A</td>
    </tr>
    <tr class="gradeA">
        <td>Gecko</td>
        <td>Netscape Navigator 9</td>
        <td>Win 98+ / OSX.2+</td>
        <td class="center">1.8</td>
        <td class="center">A</td>
    </tr>
    <tr class="gradeA">
        <td>Gecko</td>
        <td>Mozilla 1.0</td>
        <td>Win 95+ / OSX.1+</td>
        <td class="center">1</td>
        <td class="center">A</td>
    </tr>
    <tr class="gradeA">
        <td>Gecko</td>
        <td>Mozilla 1.1</td>
        <td>Win 95+ / OSX.1+</td>
        <td class="center">1.1</td>
        <td class="center">A</td>
    </tr>
    <tr class="gradeA">
        <td>Gecko</td>
        <td>Mozilla 1.2</td>
        <td>Win 95+ / OSX.1+</td>
        <td class="center">1.2</td>
        <td class="center">A</td>
    </tr>
    <tr class="gradeA">
        <td>Gecko</td>
        <td>Mozilla 1.3</td>
        <td>Win 95+ / OSX.1+</td>
        <td class="center">1.3</td>
        <td class="center">A</td>
    </tr>
    <tr class="gradeA">
        <td>Gecko</td>
        <td>Mozilla 1.4</td>
        <td>Win 95+ / OSX.1+</td>
        <td class="center">1.4</td>
        <td class="center">A</td>
    </tr>
    <tr class="gradeA">
        <td>Gecko</td>
        <td>Mozilla 1.5</td>
        <td>Win 95+ / OSX.1+</td>
        <td class="center">1.5</td>
        <td class="center">A</td>
    </tr>
    <tr class="gradeA">
        <td>Gecko</td>
        <td>Mozilla 1.6</td>
        <td>Win 95+ / OSX.1+</td>
        <td class="center">1.6</td>
        <td class="center">A</td>
    </tr>
    <tr class="gradeA">
        <td>Gecko</td>
        <td>Mozilla 1.7</td>
        <td>Win 98+ / OSX.1+</td>
        <td class="center">1.7</td>
        <td class="center">A</td>
    </tr>
    <tr class="gradeA">
        <td>Gecko</td>
        <td>Mozilla 1.8</td>
        <td>Win 98+ / OSX.1+</td>
        <td class="center">1.8</td>
        <td class="center">A</td>
    </tr>
    <tr class="gradeA">
        <td>Gecko</td>
        <td>Seamonkey 1.1</td>
        <td>Win 98+ / OSX.2+</td>
        <td class="center">1.8</td>
        <td class="center">A</td>
    </tr>
    <tr class="gradeA">
        <td>Gecko</td>
        <td>Epiphany 2.20</td>
        <td>Gnome</td>
        <td class="center">1.8</td>
        <td class="center">A</td>
    </tr>
    <tr class="gradeA">
        <td>Webkit</td>
        <td>Safari 1.2</td>
        <td>OSX.3</td>
        <td class="center">125.5</td>
        <td class="center">A</td>
    </tr>
    <tr class="gradeA">
        <td>Webkit</td>
        <td>Safari 1.3</td>
        <td>OSX.3</td>
        <td class="center">312.8</td>
        <td class="center">A</td>
    </tr>
    <tr class="gradeA">
        <td>Webkit</td>
        <td>Safari 2.0</td>
        <td>OSX.4+</td>
        <td class="center">419.3</td>
        <td class="center">A</td>
    </tr>
    <tr class="gradeA">
        <td>Webkit</td>
        <td>Safari 3.0</td>
        <td>OSX.4+</td>
        <td class="center">522.1</td>
        <td class="center">A</td>
    </tr>
    <tr class="gradeA">
        <td>Webkit</td>
        <td>OmniWeb 5.5</td>
        <td>OSX.4+</td>
        <td class="center">420</td>
        <td class="center">A</td>
    </tr>
    <tr class="gradeA">
        <td>Webkit</td>
        <td>iPod Touch / iPhone</td>
        <td>iPod</td>
        <td class="center">420.1</td>
        <td class="center">A</td>
    </tr>
    <tr class="gradeA">
        <td>Webkit</td>
        <td>S60</td>
        <td>S60</td>
        <td class="center">413</td>
        <td class="center">A</td>
    </tr>
    <tr class="gradeA">
        <td>Presto</td>
        <td>Opera 7.0</td>
        <td>Win 95+ / OSX.1+</td>
        <td class="center">-</td>
        <td class="center">A</td>
    </tr>
    <tr class="gradeA">
        <td>Presto</td>
        <td>Opera 7.5</td>
        <td>Win 95+ / OSX.2+</td>
        <td class="center">-</td>
        <td class="center">A</td>
    </tr>
    <tr class="gradeA">
        <td>Presto</td>
        <td>Opera 8.0</td>
        <td>Win 95+ / OSX.2+</td>
        <td class="center">-</td>
        <td class="center">A</td>
    </tr>
    <tr class="gradeA">
        <td>Presto</td>
        <td>Opera 8.5</td>
        <td>Win 95+ / OSX.2+</td>
        <td class="center">-</td>
        <td class="center">A</td>
    </tr>
    <tr class="gradeA">
        <td>Presto</td>
        <td>Opera 9.0</td>
        <td>Win 95+ / OSX.3+</td>
        <td class="center">-</td>
        <td class="center">A</td>
    </tr>
    <tr class="gradeA">
        <td>Presto</td>
        <td>Opera 9.2</td>
        <td>Win 88+ / OSX.3+</td>
        <td class="center">-</td>
        <td class="center">A</td>
    </tr>
    <tr class="gradeA">
        <td>Presto</td>
        <td>Opera 9.5</td>
        <td>Win 88+ / OSX.3+</td>
        <td class="center">-</td>
        <td class="center">A</td>
    </tr>
    <tr class="gradeA">
        <td>Presto</td>
        <td>Opera for Wii</td>
        <td>Wii</td>
        <td class="center">-</td>
        <td class="center">A</td>
    </tr>
    <tr class="gradeA">
        <td>Presto</td>
        <td>Nokia N800</td>
        <td>N800</td>
        <td class="center">-</td>
        <td class="center">A</td>
    </tr>
    <tr class="gradeA">
        <td>Presto</td>
        <td>Nintendo DS browser</td>
        <td>Nintendo DS</td>
        <td class="center">8.5</td>
        <td class="center">C/A</td>
    </tr>
    <tr class="gradeC">
        <td>KHTML</td>
        <td>Konqureror 3.1</td>
        <td>KDE 3.1</td>
        <td class="center">3.1</td>
        <td class="center">C</td>
    </tr>
    <tr class="gradeA">
        <td>KHTML</td>
        <td>Konqureror 3.3</td>
        <td>KDE 3.3</td>
        <td class="center">3.3</td>
        <td class="center">A</td>
    </tr>
    <tr class="gradeA">
        <td>KHTML</td>
        <td>Konqureror 3.5</td>
        <td>KDE 3.5</td>
        <td class="center">3.5</td>
        <td class="center">A</td>
    </tr>
    <tr class="gradeX">
        <td>Tasman</td>
        <td>Internet Explorer 4.5</td>
        <td>Mac OS 8-9</td>
        <td class="center">-</td>
        <td class="center">X</td>
    </tr>
    <tr class="gradeC">
        <td>Tasman</td>
        <td>Internet Explorer 5.1</td>
        <td>Mac OS 7.6-9</td>
        <td class="center">1</td>
        <td class="center">C</td>
    </tr>
    <tr class="gradeC">
        <td>Tasman</td>
        <td>Internet Explorer 5.2</td>
        <td>Mac OS 8-X</td>
        <td class="center">1</td>
        <td class="center">C</td>
    </tr>
    <tr class="gradeA">
        <td>Misc</td>
        <td>NetFront 3.1</td>
        <td>Embedded devices</td>
        <td class="center">-</td>
        <td class="center">C</td>
    </tr>
    <tr class="gradeA">
        <td>Misc</td>
        <td>NetFront 3.4</td>
        <td>Embedded devices</td>
        <td class="center">-</td>
        <td class="center">A</td>
    </tr>
    <tr class="gradeX">
        <td>Misc</td>
        <td>Dillo 0.8</td>
        <td>Embedded devices</td>
        <td class="center">-</td>
        <td class="center">X</td>
    </tr>
    <tr class="gradeX">
        <td>Misc</td>
        <td>Links</td>
        <td>Text only</td>
        <td class="center">-</td>
        <td class="center">X</td>
    </tr>
    <tr class="gradeX">
        <td>Misc</td>
        <td>Lynx</td>
        <td>Text only</td>
        <td class="center">-</td>
        <td class="center">X</td>
    </tr>
    <tr class="gradeC">
        <td>Misc</td>
        <td>IE Mobile</td>
        <td>Windows Mobile 6</td>
        <td class="center">-</td>
        <td class="center">C</td>
    </tr>
    <tr class="gradeC">
        <td>Misc</td>
        <td>PSP browser</td>
        <td>PSP</td>
        <td class="center">-</td>
        <td class="center">C</td>
    </tr>
    <tr class="gradeU">
        <td>Other browsers</td>
        <td>All others</td>
        <td>-</td>
        <td class="center">-</td>
        <td class="center">U</td>
    </tr>
</tbody>
</table>
</div>

这是一个 jsfiddle 来展示问题。奇怪的是,水平滚动实际上出现在这个(在我的本地示例中完全不存在),但它仍然不允许左侧(渲染引擎)列保持原样,并扩展整个表格,您可以这样做请参阅示例链接,它不应该这样做。

我还应该提到,这是在 Bootstrap 环境中完成的,从我到目前为止所读到的内容来看,dataTables 和 Bootstrap 应该可以很好地协同工作。我认为某个地方可能有一种样式禁用水平滚动,但我还没有发现任何差异。

此外,经过进一步检查,最左边的列上应该有一个 class="DTFC_LeftWrapper",该列没有出现在 jsfiddle 示例中,这可能就是 hoz-bar 一直向左延伸的原因。我不知道为什么它不会出现在那里,但会出现在本地文件以及示例链接中。

据我所知,class="dataTables_scrollBody" 中的表格没有超出它包含在 class="dataTables_scroll" 中的 div,而 jsfiddle 版本中似乎也没有该表。在本地版本上,任何将其强制到外部的尝试都只会加宽 div 的宽度。

我不知道,我只是想尽我所能给你继续下去。

如有任何帮助,我们将不胜感激。

jquery css twitter-bootstrap scrollbar datatables
3个回答
4
投票

我认为你需要设置在初始化程序中要修复多少列......

new FixedColumns( oTable, {
      "iLeftColumns": 0,
      "iRightColumns": 1
    } );

此信息来自 http://www.datatables.net/extras/fixedcolumns/options


4
投票

关于 Bootstrap 表宽度的最大观点引出了我们的解决方案。至少在 Chrome 中,auto 不起作用,但 none 可以,所以我们将其添加到我们的 .less 工作表中:

table {
  max-width: none
}

2
投票

最新版本的 JQuery 已弃用

$.browser
。积极开发的插件包括对
if($.browser && $.browser.msie))
而不是
if($.browser.msie))
效果的检查。您可以通过

之一解决您的问题
  1. 在您的项目中包含 $.browser

  2. 使用旧版本的 JQuery。

  3. 像其他人一样使用 $.browser 检查修补 FixColumns.js。

您的 jsfiddle 在使用旧版本的 JQuery 时可以工作。

© www.soinside.com 2019 - 2024. All rights reserved.