有没有方便的方法来显示/隐藏jquery datatable插件中的表列? 我正在使用http://datatables.net/api创建一个盒子网格。带有固定标题和固定列。哪个工作正常。
$(document).ready(function() {
//var selectedElementId = '{!selectedElementId}';
var oTable = $('#masterGridTable').dataTable( {
"sScrollY": "255px",
"sScrollX": "100%",
"sScrollXInner": "150%",
"bScrollCollapse": false,
"bPaginate": false,
"bFilter": false,
"bInfo": false,
"fnInitComplete": function(oSettings, json) {
}
} );
new FixedColumns( oTable );
} );
以下是此屏幕截图。
现在在网格中,从上午8:15到下午4:15,有15分钟的时间段 要求是制作上午/下午的过滤器,以便选择早晨从12:00Pm到4:15Pm隐藏所有街区,并且下午隐藏早晨入场。 (上午8:15至中午12:00)
我尝试使用fnSetColumnVis函数在循环中显示隐藏列。 代码:
function toggleShift(th){
var selectedShift=$(th).val();
var oTable = $('#masterGridTable').dataTable();
if(selectedShift =='Full Day'){
var bVis = oTable.fnSettings().aoColumns[iCol].bVisible;
oTable.fnDraw();
}else if(selectedShift =='Morning'){
$('.dataTables_scrollHeadInner table.dataTable tr:nth-child(2) .PM').each(function(){
var indexV = $(this).index();
oTable.fnSetColumnVis( indexV , false );
});
}else if(selectedShift =='Afternoon'){
$('.dataTables_scrollHeadInner table.dataTable tr:nth-child(2) .AM').each(function(){
var indexV = $(this).index();
oTable.fnSetColumnVis( indexV , false );
});
}
这个函数在右上角调用onchange事件(今天文本旁边的图像) 这工作(不正确) 1.隐藏错误的列 它超级慢:( 知道如何正确地做到这一点。
答案 0 :(得分:2)
首先从document.ready函数中取出var oTable
,以便在初始化之后全局引用该表。
然后使用:
var bVis = oTable.fnSettings().aoColumns[iCol].bVisible;
oTable.fnSetColumnVis( iCol, bVis ? false : true ); //This creates a toggle effect
//or
oTable.fnSetColumnVis( iCol,false);//hide
oTable.fnSetColumnVis( iCol,true);//show
其中iCol是您要隐藏的列号。
享受
答案 1 :(得分:1)
这就是我的表现。 哪个工作正常。 这里我正在做的是我在列表的onchangeEvent上调用toggleShift()方法。在我内部进行服务器端调用。并在完成后我调用刷新表方法,它只是重新创建表的实例。
function refreshTable(){
var oTable = $('#masterGridTable').dataTable( {
"sScrollY": "255px",
"sScrollX": "100%",
"sScrollXInner": "150%",
"bScrollCollapse": false,
"bPaginate": false,
"bFilter": false,
"bInfo": false,
"fnInitComplete": function(oSettings, json) {
}
} );
new FixedColumns( oTable );
$('#busyMsgDiv').hide();
}
function toggleShift(th){
$('#busyMsgDiv').show();
var selectedShiftVal = $(th).val() ;
console.log(selectedShiftVal);
changeShift1();
}