dataTable在过滤数据时阻止列大小调整

时间:2013-10-30 17:17:23

标签: javascript jquery datatables

我有一个dataTable,我在初始化表后动态过滤。我有一个JS函数,需要1个arg,这是用作过滤器的字符串。我正在使用...

在桌面上设置过滤器
oTable = fnFilter(strFilter);

这样可以正常工作,但在对表进行过滤后,列似乎会重新调整大小。 我已经将bAutoWidth设置为false,所以我不确定我还能应用什么来防止列调整大小。我希望无论出现什么数据,我在th标签中定义的尺寸都会保留。

2 个答案:

答案 0 :(得分:3)

bAutoWidth只是一个标志,指示dataTables是否应自动计算宽度。将其设置为false是一项优化功能,请参阅docs

  

启用或禁用自动列宽计算。这可以   禁用作为优化(需要一些时间来计算   widths)如果使用aoColumns传入表格宽度。

但是浏览器仍然会根据内容扩展/缩小<td>。这是表的工作方式。为了实现您的目标,诀窍是使用sScrollXaoColumns,如下所示:

var dataTable = $('#example').dataTable({
  sScrollX: "100%",
  aoColumns: [ 
    { "sWidth": "50px" },
    { "sWidth": "50px" },
    { "sWidth": "50px" },
    { "sWidth": "50px" },
    { "sWidth": "50px" }
  ]
});

这样可以得到宽度为250px的表格,每列50px - 无论内容如何。 sScrollX强制dataTable维护表列的宽度。

看到这个小提琴 - &gt; http://jsfiddle.net/MW8Ku/证明上述apporach在调用fnFilter之后也正在工作。

答案 1 :(得分:0)

引用sScrollXsWidth的答案是使用旧版DataTables API。从v 1.10+开始,语法为:

$('#example').dataTable( {
  "scrollX": true,
  "columns": [
    { "width": "50px" },
    { "width": "50px" },
    { "width": "50px" },
    { "width": "50px" },
    { "width": "50px" }
  ]
});

参考: