数据表:仅选定列的固定宽度

Posted

技术标签:

【中文标题】数据表:仅选定列的固定宽度【英文标题】:Datatable : fixed width for selected columns only 【发布时间】:2013-08-16 10:22:26 【问题描述】:

我有一个表格,其列数不固定。但是,前 3 列始终存在。

因此,以下属性在我的情况下不起作用(因为在该方法中需要固定列数)

"aoColumns": [
        "sWidth": "50px",
        "sWidth": "100px",
        "sWidth": "100px",
        null,
        null,
        null
    ]
  );

我试过类似的东西:

"aoColumns": [[1,  "sWidth": "50px" ] ]

这也不起作用,因为它会产生一些错误。

请推荐一个好方法。

【问题讨论】:

【参考方案1】:

为什么不让函数动态生成aoColumns-array?

// function that generates the aoColumns-array based on the tables <thead>
// columns beyond #3 get a fixed 25px width (just to be illustrative)
// expand the switch if certain columns need certain fixed widths
function aoColumns() 
    var ao = [];
    $("#table th").each(function(i) 
        switch (i) 
            case 0 : 
                ao.push("sWidth": "50px");
                break;
            case 1 : 
                ao.push("sWidth": "100px");
                break;
            case 2 : 
                ao.push("sWidth": "100px");
                break;
            default :
                ao.push("sWidth": "25px");
                break;
        
    );
    return ao;


$(document).ready(function () 
    var table = $('#table').dataTable(
        aoColumns: aoColumns()
    );
);

通过使用这种方法,无论表有 1、3 还是 1000 列,数据表都会正确初始化。

如果您想根据每列标题而不是它们的索引来评估列宽,您需要稍微更改 aoColumn 函数:

function aoColumns() 
    var ao = [];
    $("#table th").each(function(i, th) 
        var caption=$(th).text();
        switch (caption) 
            case 'A' : 
                ao.push("sWidth": "50px");
                break;
            case 'B' : 
                ao.push("sWidth": "100px");
                break;

            /*...
            and so on
            ...*/

            default :
                ao.push("sWidth": "25px");
                break;
        
    );
    return ao;

【讨论】:

以上是关于数据表:仅选定列的固定宽度的主要内容,如果未能解决你的问题,请参考以下文章

如何使表格列的宽度仅占用省略号溢出的必要空间?

Python Dash 数据表应仅显示选定的列

在数据文件中手动定义固定宽度

table-layout

ChartJS 条形图固定宽度动态数据集

反应从非静态列调整固定数据表的大小