在 dataTable 的一行 table 中合并 JSON 个值

Combine JSON value in one row table in dataTable

我对使用 JSON 对象的数据表有疑问, 这是列定义:

$(document).ready(function() {
        $('#tb_kehadiran').DataTable({ 
            processing: true,
            serverSide: true,
            scrollX: true,
            order: [], //init datatable not ordering
            ajax: "<?php echo site_url('ajax-readabsen')?>",
            
            columns: [
                {data: 'no', orderable:false},
                {data: 'abs_hari'},  
                {data: 'abs_tgl'},
                {data: 'abs_datang', orderable:false},
                {data: 'abs_pulang', orderable:false},
                {data: 'abs_status'},
            ]
        });
    });

我想在一行中合并两个对象值,我尝试这样做:

{data: 'abs_hari'} + " " +{data: 'abs_tgl'},

但是不行,

你能帮我解决这个问题吗?

感谢任何想法。

你有几个选择。

1。 ajax.dataSrc 选项:

使用此选项,您可以在 ajax 将它们用作 table 的来源之前处理从 ajax 收到的数据。然后你 return NEW 将成为新来源的数据:

$(document).ready(function() {
    $('#tb_kehadiran').DataTable({ 
        processing: true,
        serverSide: true,
        scrollX: true,
        order: [], //init datatable not ordering
        ajax: {
            url: "<?php echo site_url('ajax-readabsen')?>",
            dataSrc: function(originalJson) {
                // run logic to manipulate your originalJson.
                // Combine, split, do whatever you want.
                // For example, create a new field 
                // combining the data of 'abs_hari' and 'abs_tgl'
                // and call it 'abs_my_new_data_hari_tgl'.

                return newJson; // <- this will be the new data source for your table
            },
        },
        columns: [
            {data: 'no', orderable:false},
            // {data: 'abs_hari'},  
            // {data: 'abs_tgl'}, 
            {data: 'abs_my_new_hari_tgl_data_src'},
            {data: 'abs_datang', orderable:false},
            {data: 'abs_pulang', orderable:false},
            {data: 'abs_status'},
        ]
    });
});

2。 columns.render 选项:

使用自定义函数在 table 的特定列内呈现数据:

$(document).ready(function() {
    $('#tb_kehadiran').DataTable({ 
        processing: true,
        serverSide: true,
        scrollX: true,
        order: [], //init datatable not ordering
        ajax: "<?php echo site_url('ajax-readabsen')?>",
        columns: [
            {data: 'no', orderable:false},
            // {data: 'abs_hari'},  
            // {data: 'abs_tgl'},
            {
                data: null, // can be null but also one of your data field i.e. 'abs_hari'
                render: myCustomRenderFunction
            },
            {data: 'abs_datang', orderable:false},
            {data: 'abs_pulang', orderable:false},
            {data: 'abs_status'},
        ]
    });
});

// define a render function
function myCustomRenderFunction(data, type, row, meta) {
    if(type === 'display') {
        return row['abs_hari'] + " " + row['abs_tgl'] // this is used to display in the table
    } else { 
        return data; // original data of the cell from your source. this is used for functionalities other than display (like sorting, odering)
    }
}