Javascript dataTable阻止在筛选数据时调整列大小

Javascript dataTable阻止在筛选数据时调整列大小,javascript,jquery,datatables,Javascript,Jquery,Datatables,我有一个dataTable,一旦该表被初始化,我就会对其进行动态筛选。我有一个JS函数,它接受1 arg,这是用作过滤器的字符串。我正在使用…在桌子上设置过滤器 oTable = fnFilter(strFilter); 这很好,但在筛选表之后,列似乎会自行调整大小。 我已经将bAutoWidth设置为false,所以我不确定还能应用什么来阻止列的大小调整。我希望在th标记中定义的尺寸保持不变,无论存在什么数据。bAutoWidth只是指示dataTables是否应自动计算宽度的标志。将其设置

我有一个dataTable,一旦该表被初始化,我就会对其进行动态筛选。我有一个JS函数,它接受1 arg,这是用作过滤器的字符串。我正在使用…在桌子上设置过滤器

oTable = fnFilter(strFilter);
这很好,但在筛选表之后,列似乎会自行调整大小。
我已经将bAutoWidth设置为false,所以我不确定还能应用什么来阻止列的大小调整。我希望在th标记中定义的尺寸保持不变,无论存在什么数据。

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

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

但浏览器仍会根据内容展开/收缩
。这就是桌子的工作原理。要实现您想要的,诀窍是使用
sScrollX
aoColumns
如下:

var dataTable=$(“#示例”).dataTable({
sScrollX:“100%”,
AO列:[
{“sWidth”:“50px”},
{“sWidth”:“50px”},
{“sWidth”:“50px”},
{“sWidth”:“50px”},
{“sWidth”:“50px”}
]
});
这给出了一个宽度为250px的表格,每列为50px,与内容无关
sScrollX
强制dataTable保持表和列的宽度


查看此小提琴->演示在调用
fnFilter

后,上述方法也在工作。有关
sScrollX
sWidth
的答案使用的是遗留数据表API。自V1.10+以来,语法为:

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