如何删除 JQuery 数据表中的列?
How to remove columns in JQuery Datatables?
我想删除总计 = 0 的列。
所以我尝试了不同的方法。
首先,我为所有列分配了ID,例如;每个 <td>
列都有它们的 ID,例如:第一列 <td ID = 'col_1'>
,第二列全部 <td ID = 'col_2'>
等。然后在页脚回调中,如果此列总计是归零然后这个$("col_"+i).remove()
;此代码仅删除 table headers 所以我再次尝试使用 $("col_"+i).empty() 但它又是空的. <th>
仅
然后我尝试通过创建动态来隐藏列,但我没有得到任何值。
"footerCallback": function ( row, data, start, end, display )
{
var api = this.api(), data;
var intVal = function ( i ) { return typeof i === 'string' ? i.replace(/[$,]/g, '')*1 : typeof i === 'number' ? i : 0;};
var col_gonna_invis = '[';
for(i=1;i<length_of_coloumns;i++)
{
total_salary = api.column( i ).data().reduce( function (a, b) {return intVal(a) + intVal(b);},0 );
$('#total_cont_'+i).html(total_salary);
if(total_salary == 0)
{
col_gonna_invis += '{"targets": [ '+i+' ], "visible": false, "searchable": false },';
}
}
col_gonna_invis += ']';alert(col_gonna_invis);
},
"aoColumnDefs": col_gonna_invis;
请有人帮我解决这个问题,或者请有人告诉我如何隐藏或删除页脚总数为 0 的列。
提前致谢。
我建议您使用 visible()
API method along with the sum()
插件 :
用column().sum()
方法增强API:
jQuery.fn.dataTable.Api.register( 'sum()', function ( ) {
return this.flatten().reduce( function ( a, b ) {
if ( typeof a === 'string' ) {
a = a.replace(/[^\d.-]/g, '') * 1;
}
if ( typeof b === 'string' ) {
b = b.replace(/[^\d.-]/g, '') * 1;
}
return a + b;
}, 0 );
} );
现在,在 initComplete()
中,您可以非常轻松地隐藏 total
或 sum()
为 0 的列:
var table = $('#example').dataTable({
//...
initComplete : function() {
var api = this.api(),
colCount = api.row(0).data().length;
for (var i=0; i<colCount; i++) {
if (api.column(i).data().sum() == 0) {
api.column(i).visible(false);
}
}
}
});
我想删除总计 = 0 的列。
所以我尝试了不同的方法。
首先,我为所有列分配了ID,例如;每个 <td>
列都有它们的 ID,例如:第一列 <td ID = 'col_1'>
,第二列全部 <td ID = 'col_2'>
等。然后在页脚回调中,如果此列总计是归零然后这个$("col_"+i).remove()
;此代码仅删除 table headers 所以我再次尝试使用 $("col_"+i).empty() 但它又是空的. <th>
仅
然后我尝试通过创建动态来隐藏列,但我没有得到任何值。
"footerCallback": function ( row, data, start, end, display )
{
var api = this.api(), data;
var intVal = function ( i ) { return typeof i === 'string' ? i.replace(/[$,]/g, '')*1 : typeof i === 'number' ? i : 0;};
var col_gonna_invis = '[';
for(i=1;i<length_of_coloumns;i++)
{
total_salary = api.column( i ).data().reduce( function (a, b) {return intVal(a) + intVal(b);},0 );
$('#total_cont_'+i).html(total_salary);
if(total_salary == 0)
{
col_gonna_invis += '{"targets": [ '+i+' ], "visible": false, "searchable": false },';
}
}
col_gonna_invis += ']';alert(col_gonna_invis);
},
"aoColumnDefs": col_gonna_invis;
请有人帮我解决这个问题,或者请有人告诉我如何隐藏或删除页脚总数为 0 的列。
提前致谢。
我建议您使用 visible()
API method along with the sum()
插件 :
用column().sum()
方法增强API:
jQuery.fn.dataTable.Api.register( 'sum()', function ( ) {
return this.flatten().reduce( function ( a, b ) {
if ( typeof a === 'string' ) {
a = a.replace(/[^\d.-]/g, '') * 1;
}
if ( typeof b === 'string' ) {
b = b.replace(/[^\d.-]/g, '') * 1;
}
return a + b;
}, 0 );
} );
现在,在 initComplete()
中,您可以非常轻松地隐藏 total
或 sum()
为 0 的列:
var table = $('#example').dataTable({
//...
initComplete : function() {
var api = this.api(),
colCount = api.row(0).data().length;
for (var i=0; i<colCount; i++) {
if (api.column(i).data().sum() == 0) {
api.column(i).visible(false);
}
}
}
});