隐藏jQuery数据表中的列?

问题描述:

我想隐藏jQuery DataTables中的一列,其中包含地理区域th。这是我在做什么:隐藏jQuery数据表中的列?

$(document).ready(function(){ 

     if(geo_zone_on_off==0){ 
      var _index=$("#datatable_ajax .heading th:contains(GeoZone)").index(); 
      var oTable=$("#datatable_ajax").DataTable(); 
      if(_index != -1){ 
       oTable.column(_index).visible(false); 
    } 
     } 
    }); 

DataTable中加载但列没有得到隐藏。 在做这件事之前,我尝试在表格呈现时隐藏它,它工作正常。然后我做的是:

"initComplete": function(settings, json) { 
         if(geo_zone_on_off==0){ 
         var _index=$("th.sorting:contains(GeoZone),th.no-sort:contains(GeoZone)").index(); 

          if(_index != -1){ 
          grid.getDataTable().column(_index).visible(false); 
          } 
         } 
         }, 

但它有一个问题,它显示加载表时隐藏的列。为了避免这个问题,我使用了第一个提到的解决方案。但它不起作用,虽然我的索引正确。它不会给出任何错误。

+1

不工作是一种描述错误的常用方式,can你更清楚地表达自己? – Icepickle

+1

@Ippickle我应该如何阐述它?虽然我有数据表对象,列索引,并且我正在使用它们,但我还应该解释哪些内容? – Anonymous

+0

你有没有打算展示该专栏?如果不是为什么画它呢? – bluehipy

您想要隐藏一个包含地理区域的列。

尝试是这样的

$('table').DataTable(); 
    $('button').on('click',function(){ 
     $('th').each(function(i,e){ 
     if($(this).text()=='No') { 
     $(this).hide(); 
     $('tr').each(function(){ 
      $(this).find('td').each(function(index,element){ 
      if(index==i) { 
       $(this).hide(); 
      } 
      }); 
     }); 
     } 
     }); 
    }); 

demo

获取DataTable对象

var table = $('#table').DataTable(); 

获得列的目标改变的知名度

var target = //Get target of column to hide for eg for third column target = 2 
var column = table.column(target); 

Alt键呃知名度

column.visible(false); 

DataTable Documentation

它不要有那么复杂。简单地给列name。为什么不在初始化时设置visible状态? :

columnDefs: [ 
    { targets: <index>, name: 'geozone', visible: geo_zone_on_off == 1 } 
] 

然后,以后,您可以更改引用列名的知名度:在列选择

table.column('geozone:name').visible(false); 

table.column('geozone:name').visible(geo_zone_on_off == 1); 

看 - >https://datatables.net/reference/type/column-selector

+0

问题是隐藏的列在加载数据表时显示。 @davidkonrad – Anonymous

+0

@Anonymous,如果在'columnDefs'或'columns'中设置'visible:false',则不是。 – davidkonrad