【问题标题】:Datables how to sort by on screen rendered mData数据表如何按屏幕上呈现的 mData 排序
【发布时间】:2019-09-20 08:44:32
【问题描述】:

HI 正在使用 fnRender/mData 获取一些值并在屏幕上显示之前执行距离函数。如何按用户在屏幕上看到的数据进行排序?

数据使用"bServerSide": true, "bProcessing": true,,但距离正在客户端计算,如果用户点击按距离列排序,我需要在客户端计算距离后进行排序

 {
            "sClass": "ellipsis",
            "mData": function (oObj, type, val) {

                if ($('#lat').val() > 0 && $('#searchbox').val() != '')
                {
                    var distance = distanceTo(oObj[14], oObj[9], $('#lat').val(), $('#long').val(), "K");
                    return distance.toFixed(2);
                }
                else
                {
                    return '';
                }
            },
            "bSearchable": false },    

【问题讨论】:

  • 注意:我使用的是旧数据表
  • 您使用的是客户端还是服务器端 ("bServerSide": true) 处理?
  • 哪一个,客户端还是服务器端?

标签: sorting datatables render


【解决方案1】:

当您使用服务器端处理模式时,过滤、排序和分页由您的服务器端脚本执行。

使用fnServerParams 选项将#lat#searchbox 的值发送到服务器,并在服务器端脚本中复制您的逻辑以达到您想要的效果。

这意味着您还需要通过服务器端脚本计算距离。

或者,如果您的数据集很小,您可以切换到客户端处理模式并且排序会起作用。

【讨论】:

  • @Beginner 如果您的数据集很小(例如,10000 条记录以下),您可以切换到客户端处理模式,并且可以进行排序。
  • 如果我能够计算服务器端,那么我只需将它设置为数据表上的距离变量,我知道它会很好地排序。我希望我不必在服务器上工作,并且可以在客户端上做这件事
  • @Beginner,你能切换到客户端处理模式,看看更新的答案吗?
  • 我可以浏览整个数据集来做一些其他的事情......
  • $(aData).each(function (index) { $(".it").append("
    "); });
猜你喜欢
  • 1970-01-01
  • 2014-10-07
  • 2015-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-17
  • 2019-10-20
  • 2021-09-16
相关资源
最近更新 更多