Editor example Edit icon

The other inline editing examples present an interface whereby you click on the cell that you want to edit and row selection options are presented in the first column for the primary editing mode of Editor.

As this example shows, any element can be used to activate the inline edit. In this particular case, a pencil icon is added to each cell, which can be clicked upon. Clicking anywhere else in the row will select the row, but clicking the icon will simply activate the inline editing mode for that cell.

This could be useful if only certain columns are to be available, thus highlighting and making clear to the users which columns are editable, or if other action controls are also to be presented for each cell.

The Javascript shown below is used to initialise the table shown in this example:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
var editor; // use a global for the submit and return data rendering in the examples
 
$(document).ready(function() {
    editor = new $.fn.dataTable.Editor( {
        ajax: "../../controllers/staff.php",
        table: "#example",
        fields: [ {
                label: "First name:",
                name: "first_name"
            }, {
                label: "Last name:",
                name: "last_name"
            }, {
                label: "Position:",
                name: "position"
            }, {
                label: "Office:",
                name: "office"
            }, {
                label: "Extension:",
                name: "extn"
            }, {
                label: "Start date:",
                name: "start_date",
                type: "datetime"
            }, {
                label: "Salary:",
                name: "salary"
            }
        ]
    } );
 
    var editIcon = function ( data, type, row ) {
        if ( type === 'display' ) {
            return data + ' <i class="fa fa-pencil"/>';
        }
        return data;
    };
 
    $('#example tbody').on( 'click', 'td i', function (e) {
        e.stopImmediatePropagation(); // stop the row selection when clicking on an icon
 
        editor.inline( $(this).parent() );
    } );
 
    $('#example').DataTable( {
        dom: "Bfrtip",
        ajax: "../../controllers/staff.php",
        columns: [
            { data: "first_name", render: editIcon },
            { data: "last_name",  render: editIcon },
            { data: "position",   render: editIcon },
            { data: "office",     render: editIcon },
            { data: "start_date", render: editIcon },
            { data: "salary",     render: function ( data, type, row ) {
                if ( type === 'display' ) {
                    var numberRenderer = $.fn.dataTable.render.number( ',', '.', 0, '$' ).display;
                    return numberRenderer( data )+ ' <i class="fa fa-pencil"/>';
                }
                return data;
            } }
        ],
        select: true,
        buttons: [
            { extend: "create", editor: editor },
            { extend: "edit",   editor: editor },
            { extend: "remove", editor: editor }
        ]
    } );
} );

In addition to the above code, the following Javascript library files are loaded for use in this example:

Editor submits and retrieves information by Ajax requests. The two blocks below show the data that Editor submits and receives, to and from the server. This is updated live as you interact with Editor so you can see what is submitted.

Submitted data:

The following shows the data that has been submitted to the server when a request is made to add, edit or delete data from the table.

// No data yet submitted

Server response:

The following shows the data that has been returned by the server in response to the data submitted on the left and is then acted upon.

// No data yet received