3

I'm have a js datatable with json content in front of me

$('#data').DataTable( {
     data: data,
     columns : [ 
         { data: "number" },
         { data: "firstname" }, 
         { data: "lastname" }
    ]
});

the datatable itself fills itself as intended. However, I'd like to add another column at the end of the table which is not quite part of the data I get. Let's say I want to add a button or a link there.

is there a quick way to add another column and use the data (eg. number)?

Desired resault for the table:

Number | Firstname | Lastname | Action
001    | John      | Doe      | link to ...page?nr=001
023    | Jane      | Doe      | link to ...page?nr=023
1

2 Answers 2

4

This code might do your work,

$('#data').DataTable( {
     data: data,
     columns : [ 
         { data: "number" },
         { data: "firstname" }, 
         { data: "lastname" },
         {
             "data": null,
             "render": function ( data, type, row, meta ) {
               return '<a href="'+data['number']+'">View Detail</a>'; }
         },
    ]
});
Sign up to request clarification or add additional context in comments.

1 Comment

what can we do if we have to check for permissions for actions. If yes then show the column. I tried by checking permissions in render function which is returning empty column in case of null returned or empty returned. Only way for me is to check permission before defining the column i.e. before {}. Is it the only approach?
0

This is based on example found here

function Person( firstname, lastname, age ) {
    this._firstname = firstname;
    this._lastname  = lastname;
    this._age       = age;
 
    this.firstname = function () {
        return this._firstname;
    };

    this.lastname = function () {
        return this._lastname;
    };
    
    this.age = function () {
        return this._age;
    };
    
    this.link = function () {
        return '<a href="linkto...'+this._age+'">linkto...'+this._age+'</a>';
    };
 
}
 
 
$(document).ready(function() {
    var table = $('#example').DataTable({
        columns: [
            { data: null, render: 'firstname' },
            { data: null, render: 'lastname' },
            { data: null, render: 'age'  },
            { data: null, render: 'link' }
        ]
    });
 
    table.row.add( new Person( 'Airi', 'Satou', 33 ) );
    table.row.add( new Person( 'Angelica', 'Ramos', 47 ) );
    table.row.add( new Person( 'Ashton', 'Cox', 66 ) );
    table.draw();
} );
<link href="https://cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css" rel="stylesheet"/>
<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<script src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script>
<table id="example" class="display" style="width:100%">
</table>

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.