从DataTables获取列名称

时间:2016-12-15 05:23:04

标签: jquery datatables datatables-1.10

我在html表单中动态生成一个select。目的是能够为不可见的数据表列交换可见的数据表列。首先,我不确定如何完成实际转换。

我的主要问题是如何获取列名。我已经尝试了window.table.api().columns()[0];window.table.api().columns().data()[0];(我知道[0]索引是如何工作的,[0]是我代表我将要迭代的方式。有谁知道如何获取这些列的名称?

以下是我的构造函数外观的示例:

   window.table =
            $table.dataTable({
                'ajax': {
                    'url': '/api/v1/data',
                    "type": "GET"
                },
                /**
                 * Specify which columns we're going to show
                 */
                columns:             {
                  data: 'Visible',
                  name: 'Visible',
                  visible: true
                  },
                    {
                    data: 'dataName',
                    name: 'Invisible',
                     visible: false
                },
                /**
                 * we want to disable showing page numbers, but still limit the number of results
                 */
                "dom": "t",
                /**
                 * let's disable some dynamic custom css
                 */
                asStripClasses: [],
                /**
                 * let's keep the pages reasonable to prevent scrolling
                 */
                pageLength: 8
            });

1 个答案:

答案 0 :(得分:3)

不是使用Datatables API查找这些名称,而是可以通过DOM使用JQuery selectors获取列的名称,如下所示:

   //Replace yourTableId with the corresponding Id
    $("#yourTableId thead tr th").each(function(){
        alert(this.innerHTML); //This executes once per column showing your column names!
    }); 

我已针对https://datatables.net/示例表(其中yourTableId =示例)对其进行了测试。

编辑:

由于OP说他想找到不可见的列并且这些列不能通过DOM直接访问,因此解决方案会产生如下结果:

    //fill with the appropiate constructor
    var table = $('#yourTableId').DataTable();

    //iterate through every column in the table.
    table.columns().every( function () {        
            var visible = this.visible();
            if (!visible)
                alert(this.header().innerHTML);
    });

来源:

columns.every()

column.visible()

问候!