【问题标题】:How to make custom sorting for specific column in datatable?如何对数据表中的特定列进行自定义排序?
【发布时间】:2019-12-02 04:41:47
【问题描述】:

我已经加载了带有 ajax 响应数据的服务器端数据表,并且我有一列显示:成员的时间,格式为(例如 5 天、11 小时、12 分钟)。所以我想根据天数、小时数和分钟数对该列进行排序。 我无法向您展示整个代码,因为它是机密的,但我会向您展示 ajax 调用和表格数据,如下所示:-

这是显示时间的列,我想根据天、小时和分钟进行升序和降序排序。

<script>


$('table').DataTable({

processing: true,
serverSide: true,
responsive: true,
searching: true,
    "ajax": {
        url : "<?php echo site_url("getStatus") ?>",
        "data":function(d){
        }
 },
        "columnDefs": [
        {
        "render": function ( data, type, full, meta) {
          //what should i have to do here for custom sorting. i have tried different ways but it won't work so i have removed that code.
        },
        }]         
});

【问题讨论】:

  • 自定义排序是什么意思? Datatable 不知道您的排序,因为这应该发生在服务器端。您所要做的就是为所需的列启用排序,当用户单击数据表时,数据表将向服务器发送排序请求。获取后面的列索引并排序返回结果。
  • 它允许按此排序:- link 但它在我那里不起作用,我必须做出改变,但它不允许。
  • 是的,但那是本地排序。它只会对本地可用的数据进行排序。使用服务器端处理,您需要对整个数据集进行排序
  • 感谢您的回复,但您能否提供任何外部链接或任何有关此的示例,以便我可以实施或更好地理解以在我的数据表中使用它。
  • 只需在网络选项卡中检查从您的数据表发送的获取请求的参数。您将了解从数据表发送到服务器的数据。我很久以前在一个项目中做过这个,我没有任何链接或示例

标签: jquery ajax codeigniter datatables


【解决方案1】:

@Divyarajsinh,

我正在使用 laravel,我之前遇到过同样的问题。希望对你有帮助。

通过添加 aoColumns 和 order 来编辑您的刀片文件脚本

"processing": true,
"serverSide": true,
"searching": false,        
'iDisplayLength': 10,
"bFilter" : false,               
"bLengthChange": false,
"aoColumns": [
        { "bSortable": true }
    ],
"order": [
      [0, "desc" ]
    ],
 "ajax": {
    "url": "{!! route("arrayList") !!}",
    "type": "POST",
    "jsonpCallback": 'jsonCallback',
    "dataType": "jsonp"
    }

路由文件

Route::post('arrayList', 'TestController@arrayList')->name('arrayList');

像这样编辑你的数组:

$arr=[
  "4 days, 20 hours, 29 minutes",
  "0 days, 00 hours, 14 minutes",
  "4 days, 21 hours, 12 minutes",
  "0 days, 00 hours, 41 minutes",
  "4 days, 21 hours, 23 minutes"
];

然后将订单请求输入您的控制器并使用排序数组功能。

$order=$request->order;
if($order[0]['dir']=='desc'){
      arsort($arr);
} elseif($order[0]['dir']=='asc'){
    asort($arr);
}

【讨论】:

    猜你喜欢
    • 2017-01-16
    • 2019-09-28
    • 2013-12-03
    • 1970-01-01
    • 1970-01-01
    • 2020-07-11
    • 2020-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多