2013-02-11 98 views
0

我有一个js函数工作在2个部分使用的表,这两个部分只有一个td不同,我想使用这个相同的函数两次但带有一个参数,告诉我是否添加或不添加此列数据到渲染。这是一个常见的任务,但我无法用dataTable来实现它。如何添加删除列dataTables“aoColumns”在渲染基于条件

function find(url, type) 
{ 
    $('#table').dataTable({ 
     "bProcessing": true, 
     "sAjaxSource": url, 
     "sAjaxDataProp": "", 
     "bDeferRender": true, 
     "sPaginationType": "full_numbers", 
     "bStateSave": true, 
     "bAutoWidth": true, 
     "bDestroy":true, 
     "aoColumns": 
     [ 
      {"mData": "a"}, 
      {"mData": "b"}, 
      {"mData": "conditionalData"} 
     ], 
     "oLanguage": 
     { 
      "sLengthMenu": "Mostra _MENU_ risultati per pagina", 
      "sZeroRecords": "Nessun RISULTATO", 
      "sInfo": "Mostra da _START_ a _END_ di _TOTAL_ risultati", 
      "sInfoEmpty": "Mostra 0 su 0 di 0 risultati", 
      "sInfoFiltered": "(Filtrati da _MAX_ risultati totali)", 
      "sSearch": "Filtra:", 
      "oPaginate": 
      { 
       "sFirst": "|<", 
       "sLast": ">|", 
       "sNext": ">", 
       "sPrevious": "<" 
      } 
     }, 
     "aoColumnDefs": [ {"bSortable": false, "aTargets": []} ] 
    }); 
} 

除了通过构造函数初始化所有参数,有没有办法做到像下面这样?我想跟着this好的规则:

"bDestroy":true, 
"aoColumns": 
[ 
    {"mData": "a"}, 
    {"mData": "b"}, 
    if(type == 1) 
    { 
     {"mData": "conditionalData"} 
    } 
], 
"oLanguage": 

回答

1

您可以通过将每个列到你的数据表做的伎俩。然后,您可以使用fnSetColumnVis函数隐藏某列(哪些不符合您的条件):

var oTable = $('#myTable').dataTable({...}); 
for(var i = 0; i < columns.length; i++){ 
    if(columns[i] not matching criteria) 
     oTable.fnSetColumnVis(i, false); 
}