数据表

时间:2015-10-01 06:56:36

标签: jquery datatable inline-code

我不确定之前是否提出过这个问题。但我找不到它。这就是我现在要问的原因。

我必须使用更多的数据表。所以我正在编写一个通用函数,通过传递参数一次又一次地调用它。对于那个常见的代码,我必须使用内联if语句来添加列宽,这里我附加了我的代码。有人帮我在其中插入内联条件。

function common_datatable(file_ajax, module_name, btns_list, widths, view_btn) {            
  return $('#'+module_name+'_table').DataTable({ 
    "processing": true,
    "serverSide": true,
    "ajax": file_ajax, 
    "bLengthChange": false, "bAutoWidth": false , "sScrollX": "100%", 
    aoColumns : [
        (widths[0] !=0) ? '{ "sWidth": "1%" }' : '',            
        { "sWidth": "30%" },
        { "sWidth": "30%"},
        { "sWidth": "9%"}           

    ],  orderCellsTop: true,
    "scrollX": true,
    "order": [   [1, "asc"]  ], 
    "columns": [{"orderable": false}, null, null,  null, null, null ]
  });       
}

上面的代码我通过width参数传递了width的数组,这是我正在使用的代码,

(width[0] !=0) ? '{ "sWidth": "1%" }' : '',

但它没有在里面工作。

2 个答案:

答案 0 :(得分:3)

在尝试时,无法使用条件元素初始化数组。请尝试以下

    function common_datatable(file_ajax, module_name, btns_list, widths, view_btn) {            
        var aoColumns = [                
            { "sWidth": "30%" },
            { "sWidth": "30%"},
            { "sWidth": "9%"}
       ];
        if(widths[0] != 0) {
            aoColumns.unshift({"sWidth": "1%"});
        }

        return $('#'+module_name+'_table').DataTable({ 
            "processing": true,
            "serverSide": true,
            "ajax": file_ajax, 
            "bLengthChange": false, "bAutoWidth": false , "sScrollX": "100%", 
            "aoColumns": aoColumns,  
            "orderCellsTop": true,
            "scrollX": true,
            "order": [   [1, "asc"]  ], 
            "columns": [{"orderable": false}, null, null,  null, null, null ]
        });       
    }

答案 1 :(得分:0)

函数中的变量名称是宽度,而您在if语句中使用宽度

  

尝试使用:(widths [0]!= 0)? '{“sWidth”:“1%”}':'',
  而不是:(width [0]!= 0)? '{“sWidth”:“1%”}':'',