如何在 jquery DataTable 中进行排序或分页时控制处理时间



我在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 秒。一个丑陋的"闪光",只是延迟了更长的时间。事实上,我认为在这种情况下,如果它一直可见,它看起来会更好。

我看不出解决这个问题的好方法,除非你总是可以相对肯定地预测这个过程需要多长时间。而且你不能这样做,因为每个客户端环境都会有所不同。

我建议不要试图抓住这条红鲱鱼......要么保持启用状态,要么不启用。这是我诚实的建议。

最新更新