我在jQuery数据表中有一个问题。每次单击排序时都会显示此"正在处理"消息,并且排序是客户端排序。这真的很烦人,因为它看起来像闪烁。我怎么能做这样的事情?如果处理时间小于 1 秒,不显示"正在处理"消息?
$('#tblUsers').dataTable({
"bDestroy": true,
"bProcessing": true,
"sProcessing": false,
"sAjaxSource": path,
"bFilter": false,
"bLengthChange": false,
"bInfo": false,
"iDisplayLength": 15,
"sPaginationType": "full_numbers",
"aoColumns":
[
{ "mDataProp": "UserName" },
{ "mDataProp": "FirstName" },
{ "mDataProp": "LastName" },
{ "sDefaultContent": "", "fnRender": function (oObj) { return "<a onclick=AssignUser(this,'" + oObj.aData.UserName + "','btnRemove_" + oObj.aData.UserName + "') id='btnAssgin_" + oObj.aData.UserName + "'> Assign User</a>"; }
},
{ "sDefaultContent": "", "fnRender": function (oObj) { return "<a onclick=RemoveUser(this,'" + oObj.aData.UserName + "','btnAssgin_" + oObj.aData.UserName + "') id='btnRemove_" + oObj.aData.UserName + "' disabled='true'>Remove User</a>"; }
}
],
"aoColumnDefs": [
{ "sWidth": "20%", "aTargets": [0] },
{ "sWidth": "20%", "aTargets": [1] },
{ "sWidth": "20%", "aTargets": [2] },
{ "sWidth": "20%", "aTargets": [3] },
{ "sWidth": "20%", "aTargets": [4] }
]
});
如果您不想看到"处理"指示器,只需将bProcessing
设置为 false(或将其完全删除,默认情况下会使其为 false)。如果您不想看到它,不知道为什么一开始就包含bProcessing
!继承了代码?
[更新以回应评论]
我现在明白了。但我认为这是一个红鲱鱼,它回到了卡夫曼的评论。您不知道处理需要多长时间才能完成。
"可是格雷格!"我听到你们中的一些人说,"只是在至少一秒钟之前不要显示处理的东西!简单!
您要做的就是用一个问题换取同一问题的延迟版本。假设处理需要 1.2 秒。您等待显示"处理"指示器一秒钟,然后您决定"是的,这是一个很长的指示器,让我们显示指示器!但随后指示器仅显示 0.2 秒。一个丑陋的"闪光",只是延迟了更长的时间。事实上,我认为在这种情况下,如果它一直可见,它看起来会更好。
我看不出解决这个问题的好方法,除非你总是可以相对肯定地预测这个过程需要多长时间。而且你不能这样做,因为每个客户端环境都会有所不同。
我建议不要试图抓住这条红鲱鱼......要么保持启用状态,要么不启用。这是我诚实的建议。