我正在使用Datatables 1.10.4和colvis 1.1.1
表格的HTML -
<div class="section-header clearfix">
<div style="float: left">
<span class="section-title">Cosmetic</span>
</div>
</div>
<table class=" display " ID="tab1" >
<thead>
<TR>
<th nowrap>ID</th>
<th style="display: none;">hdnID</th>
<th nowrap>Type</th>
<th nowrap>Severity</th>
<th nowrap>Priority</th>
<th nowrap>Due<BR>Date</th>
<th nowrap>Module</th>
<th nowrap>Date-Time Created</th>
<th nowrap>Estimated Complition Date</th>
</TR>
</thead>
<tbody>
<tr>
<td class="linecol1" class="linecol1" align="CENTER" nowrap>
<A HREF="javascript:somescript()" CLASS="INP">294879</A>
</td>
<td style="display: none;"><INPUT TYPE="HIDDEN" NAME="hdnID" VALUE="294879"></td>
<td class="line" align="left" nowrap> Cosmetic </TD>
<td class="line" align="left" nowrap> Low </TD>
<td class="line" align="left" nowrap> </TD>
<td class="line" align="center" nowrap> </TD>
<td class="line" align="left" nowrap> Module </TD>
<td class="line" align="center" nowrap> 02/27/2013 </TD>
<td class="line" align="center" nowrap> 02/30/2013 </TD>
</tr>
</tbody>
</table>
Javascript -
var dtTable = $("table[id^='tab']").dataTable( {
"pagingType": "full_numbers",
"scrollX": true,
"lengthChange":false,
"autoWidth":false,
"orderClasses": false,
"searching":false,
"dom": 'RT<"clear">lfrtip',
"oTableTools": {
"sSwfPath": './swf/copy_csv_xls_pdf.swf',
"aButtons": [
{
"sExtends": 'collection',
"sButtonText": 'Export',
"aButtons": [ 'xls','csv', 'pdf','copy', 'print']
}
]
}
} );
var colvis = new $.fn.dataTable.ColVis(dtTable);
$(colvis.button()).insertAfter("div.tab-content > div.section-header");
这将创建显示/隐藏列按钮,其中包含<thead>
中所有列的列表。
问题是它显示/隐藏列表中包含hdnID
列,即使它具有display:none
样式且整个列在屏幕上不可见。
我尝试过使用“排除”选项 -
var colvis = new $.fn.dataTable.ColVis(dtTable,{
exclude: [1],
});
但我希望JS代码能够动态确定哪些列号不可见,并从列表中排除这些列号。 为了找出不可见的列号,我尝试了这个 -
$(dtTable.fnSettings().aoColumns).each(function(){
if(this.nTh.style.display == 'none')
{
excludeColumns = this.idx + ',';
}
});
var colvis = new $.fn.dataTable.ColVis(dtTable,{
exclude: [excludeColumns],
});
但这也不起作用。
任何帮助表示感谢。
答案 0 :(得分:1)
将colvis脚本更改为 -
后开始工作var excludeColumns = [];
$(dtTable.fnSettings().aoColumns).each(function(){
if(this.nTh.style.display == 'none')
{
excludeColumns.push(this.idx);
}
});
var colvis = new $.fn.dataTable.ColVis(dtTable,{
exclude: excludeColumns,
});
基本上提供的数组到&#34;排除&#34;选项