使用Datatables javascript的动态列

时间:2014-12-15 08:00:25

标签: javascript jquery datatables

js以显示json文件。我提取我的列的名称并构建一个像这样的数组:

columns = ["Date", "C2R", "CM", "Total"]

我的sTitle和mData具有相同的名称,因此我尝试这样做但失败了。

    jQuery('#result_example').dataTable( {
        "data": result_table,
        "columns": [
            jQuery.each(columns, function(i, value){
                //console.log(value); which give ["Date", "C2R", "CM", "Total"]
                { "sTitle": + value + , "mData": + value + },  
            })
        ],

        paging: true,
        searching: false,
        "bInfo" : false 
    } ); 

目标是得到这样的结果:

    jQuery('#result_example').dataTable( {
        "data": result_table,
        "columns": [
                { "sTitle": "Date" , "mData": "Date" },
                { "sTitle": "C2R" , "mData": "C2R" },
                { "sTitle": "CM" , "mData": "CM" },
                { "sTitle": "Total" , "mData": "Total" }
        ],

        paging: true,
        searching: false,
        "bInfo" : false 
    } ); 

2 个答案:

答案 0 :(得分:3)

您可以在外部构建对象,然后在dataTable

中使用它
var clmns = [];
jQuery.each(columns, function(i, value) {
    clmns.push({ "sTitle": value, "mData": value}); // push it in
});    
jQuery('#result_example').dataTable({
    "data": result_table,
    "columns": clmns, // use it here
    paging: true,
    searching: false,
    "bInfo": false
});

答案 1 :(得分:1)

问题:

当你执行你的数据表代码时,它没有得到列名,因为你是在稍后提取它,但是那时候已经执行了数据表代码,所以你可以用jQuery.map()做的就是创建一个数组填充了columns数组的每次迭代的对象:

var colData = $.map(columns, function(colName) { // creates an array
   return { "sTitle": colName, "mData": colName};// fills with js objects
}); 

jQuery('#result_example').dataTable( {
     "data": result_table,
     "columns":colData, //<---------you can pass it here.
     // other code as is
});