首页 > 解决方案 > jQuery DataTables - 在修改值后对虚拟列进行排序

问题描述

我有一个带有虚拟列的数据表,该列在加载后正在填充。但是,修改后的列无法排序,因为它似乎是按照从数据库中提取的原始值排序的,这只是一个空字符串。我也尝试过修改单元格的数据顺序和数据排序值,但这并没有解决我的问题。如何向 dataTable 指示单元格的排序值是什么?

// initialize data table
$('#projects').dataTable( {
    "dom": "<'row'<'col-md-6'l><'col-md-6'f>r>t<'row'<'col-md-6'i><'col-md-6'p>>",
    "order": [[ 1, "desc" ]],
    "columns": [
        { data: 'active', name: 'active' },
        { data: 'name', name: 'name' },
        { data: 'entry_count', name: 'entry_count' }
    ],
    "processing": true,
    "serverSide": true,
    "ajax": "{{{ URL::to('admin/projects/data') }}}"
}).on( 'draw.dt', function () {
    // update dummy column data
    $.ajax({
        type: 'POST',
        url: '/admin/projects/getEntryCount',
        success: function(data) {
            $("table").find('.entry_count').each(function(){
                $(this).html(data[$(this).attr("id")]);
                $(this).parent().attr("data-order",data[$(this).attr("id")]);
            });

        }
    });
});

控制器.php

// get table data
public function getData() {
    $projects = DB::table('project')
        ->select(array(
            'id',
            'active',
            'name'
        ));
    // add dummy columns for sorting
    $projects = $projects->addSelect(DB::raw("'' as entry_count"));

    return Datatables::of($projects)
       ->add_column('entry_count', '<p class="entry_count" id="entry_count_{{ $id }}"></p>')
       ->remove_column('id')
       ->make(true);
}

标签: jquerylaraveldatatables

解决方案


推荐阅读