2017-08-17 86 views
4

我想隱藏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

回答

0

您想要隱藏一個包含地理區域的列。

嘗試是這樣的

$('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

0

獲取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

1

它不要有那麼複雜。簡單地給列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