数据表:删除行而不影响“(从X个条目中过滤掉)”

时间:2017-03-22 11:35:39

标签: javascript jquery datatables

我有一个相当大的表,在运行Datatables API时需要几秒钟才能呈现。

在渲染时,我将所有行的不透明度设置为0,并在开头添加一行包含一个注释“Rendering table ...”的注释,这样就可以显示更少的juttering和丑陋的表,直到它准备好了可见

使用initComplete回调函数,此行将被删除,其他行可见:

"initComplete": function(){
    $( 'table.MIS_return_data tbody.MIS_returned_content tr.render-note' ).remove();
    $( 'table.MIS_return_data tbody.MIS_returned_content tr:not(.no-select)' ).css('opacity', 1);
    $( 'table.MIS_return_data tbody.MIS_returned_content tr.no-select' ).css('opacity', 0.6);
},

问题在于,在表格底部我得到一个注释:

  

显示580个条目中的1到580个(从581个条目中过滤掉)

它已过滤的1个条目是带有渲染注释的行。

我需要完全删除该行,并且不再由API“看到”。我该怎么做?

我也试过使用以下代码而不是jQuery.remove():

"initComplete": function(){
    table.rows( $( 'table.MIS_return_data tbody.MIS_returned_content tr.render-note' ) ).remove();
    table.draw();
    $( 'table.MIS_return_data tbody.MIS_returned_content tr:not(.no-select)' ).css('opacity', 1);
    $( 'table.MIS_return_data tbody.MIS_returned_content tr.no-select' ).css('opacity', 0.6);
},

但这不仅不起作用,唯一它也只将不透明度应用于表格的第一行。

一种解决方法是使用以下方法完全删除底部的注释:

"language": {
    "infoFiltered": "",
},

然而,这并不理想,因为我希望用户能够过滤结果,通过某些参数隐藏/显示行。因此,该说明将具有实际用途。

如果您需要更多详细信息或澄清所写内容,请询问。

任何帮助表示赞赏!感谢

1 个答案:

答案 0 :(得分:2)

像@annoyingmouse上面说的那样..

在表格上注入一个表示表格的“块”...一旦javascript完成构建表格,就可以隐藏块并使用粗略的隐藏/显示或使用父级的CSS淡入淡出过渡来显示表格。通过这种方式,可以更好地分离关注点...数据表通过正确的数据来处理它,ui通过在正确的时间显示和隐藏来实现它的目的。

这与其他网站(例如linkedin和facebook)使用的策略相同。在初始加载时,页面呈现一个静态块(在f​​b墙上,例如这个块看起来像一个淡出的墙贴)...然后一旦xhr请求返回数据,前端应用程序用实际内容替换静态块。 / p>

在你的情况下,它会是相同的,但不是等待xhr来解决它,而是由数据表渲染回调触发。