2011-02-24 121 views
12

我为JQuery使用DataTables插件,我的问题基本上在于事实,即我的数据表必须有很多列,并且(可视化)从其容器的边界出来(一个div标签)。然后我隐藏了一些在这一点上不相关的列。但是表格的宽度并不会自动改变它的大小(让我们对其父母的witdh说)。我尝试使用创建数据表后如何在隐藏列后调整JQuery/Datatable的大小

fnAdjustColumnSizing() 

功能,但它似乎并不工作(我也试图与fnDraw重绘表())。我想也给一些初始参数,以获得在每一列

$("#reportTable").dataTable({"aoColumns":[{sWidth:"10%"},{sWidth:"10%"},{sWidth:"10%"}]}); 

更小的尺寸,但因为我有“打开”的bRetrieve参数,它抛出一个错误(我做了以后,但它没有工作,它只是防止错误弹出)。 因此......在我隐藏了一些列后,我想让我的数据表更小。

在此先感谢。

+0

出现什么错误? – mmurch 2011-02-24 20:42:32

+0

错误是关于该数据表无法被初始化,因为数据表已经在那里和我经过了一些新的参数,我刚过bRetrieve为真(bDestroy工作也一样),因为我保存在JavaScript中的数据表的状态变种。这不是真正的解决方案或问题。 – ecruz 2011-03-23 19:17:15

回答

13

解决方案实际上比我想象的要简单。使用谷歌浏览器中的“检查元素”功能,我发现,在调用“datatable()”数据表的方法时,datatables API根据显示列数所需的空间使用固定宽度。这是像1947像素左右。因此,你不能用简单的css来改变它,因为数据表使用的固定宽度具有更高的优先级。 我发现用“宽度” jquery的方法隐藏列后的溶液:

$("#reportTable").width("100%"); 

,因为它直接在表格元件的变化的宽度属性。

+0

知府!谢谢 – 2012-03-09 20:30:57

+0

我一直在挣扎几个小时。非常感谢 !顺便说一句,工作正常'$ table.width('auto');'如果你不想你的表填充它的容器。唯一的办法是重载先前计算的宽度。 – OlivierH 2015-06-09 09:18:12

0

要设置数据表中列的宽度我使用sClass参数为列指定不同的类,然后使用css设置宽度。

如果某列数据,但你不希望它可见,bVisible设置为false,也不会呈现列,而不是试图掩盖它渲染后。

+0

即使我不确切地知道我的表的列数是否可以工作吗?我的表是通过从不同的SQL查询中检索数据动态创建的,因此我无法确定我的表有多少个列。我已经尝试过,但似乎没有隐藏任何列。 – ecruz 2011-03-23 17:12:02

相关问题