天行健,君子以自强不息;地势坤,君子以厚德载物;

JQuery Datatables 之 显示行的附加信息

HTML

<table id="example" class="display" cellspacing="0" width="100%">
        <thead>
            <tr>
                <th></th>
                <th>Name</th>
                <th>Position</th>
                <th>Office</th>
                <th>Salary</th>
            </tr>
        </thead>
 
        <tfoot>
            <tr>
                <th></th>
                <th>Name</th>
                <th>Position</th>
                <th>Office</th>
                <th>Salary</th>
            </tr>
        </tfoot>
    </table>

CSS:

td.details-control {
    background: url('../resources/details_open.png') no-repeat center center;
    cursor: pointer;
}
tr.shown td.details-control {
    background: url('../resources/details_close.png') no-repeat center center;
}

Ajax:

{
    "data": [{
        "name": "Tiger Nixon",
        "position": "System Architect",
        "salary": "$320,800",
        "start_date": "2011/04/25",
        "office": "Edinburgh",
        "extn": "5421"
    },
    {
        "name": "Olivia Liang",
        "position": "Support Engineer",
        "salary": "$234,500",
        "start_date": "2011/02/03",
        "office": "Singapore",
        "extn": "2120"
    },
    {
        "name": "Bruno Nash",
        "position": "Software Engineer",
        "salary": "$163,500",
        "start_date": "2011/05/03",
        "office": "London",
        "extn": "6222"
    },
    {
        "name": "Sakura Yamamoto",
        "position": "Support Engineer",
        "salary": "$139,575",
        "start_date": "2009/08/19",
        "office": "Tokyo",
        "extn": "9383"
    },
    {
        "name": "Thor Walton",
        "position": "Developer",
        "salary": "$98,540",
        "start_date": "2013/08/11",
        "office": "New York",
        "extn": "8327"
    },
    {
        "name": "Finn Camacho",
        "position": "Support Engineer",
        "salary": "$87,500",
        "start_date": "2009/07/07",
        "office": "San Francisco",
        "extn": "2927"
    },
    {
        "name": "Serge Baldwin",
        "position": "Data Coordinator",
        "salary": "$138,575",
        "start_date": "2012/04/09",
        "office": "Singapore",
        "extn": "8352"
    },
    {
        "name": "Zenaida Frank",
        "position": "Software Engineer",
        "salary": "$125,250",
        "start_date": "2010/01/04",
        "office": "New York",
        "extn": "7439"
    },
    {
        "name": "Zorita Serrano",
        "position": "Software Engineer",
        "salary": "$115,000",
        "start_date": "2012/06/01",
        "office": "San Francisco",
        "extn": "4389"
    },
    {
        "name": "Jennifer Acosta",
        "position": "Junior Javascript Developer",
        "salary": "$75,650",
        "start_date": "2013/02/01",
        "office": "Edinburgh",
        "extn": "3431"
    },
    {
        "name": "Cara Stevens",
        "position": "Sales Assistant",
        "salary": "$145,600",
        "start_date": "2011/12/06",
        "office": "New York",
        "extn": "3990"
    },
    {
        "name": "Hermione Butler",
        "position": "Regional Director",
        "salary": "$356,250",
        "start_date": "2011/03/21",
        "office": "London",
        "extn": "1016"
    },
    {
        "name": "Lael Greer",
        "position": "Systems Administrator",
        "salary": "$103,500",
        "start_date": "2009/02/27",
        "office": "London",
        "extn": "6733"
    },
    {
        "name": "Jonas Alexander",
        "position": "Developer",
        "salary": "$86,500",
        "start_date": "2010/07/14",
        "office": "San Francisco",
        "extn": "8196"
    },
    {
        "name": "Shad Decker",
        "position": "Regional Director",
        "salary": "$183,000",
        "start_date": "2008/11/13",
        "office": "Edinburgh",
        "extn": "6373"
    },
    {
        "name": "Michael Bruce",
        "position": "Javascript Developer",
        "salary": "$183,000",
        "start_date": "2011/06/27",
        "office": "Singapore",
        "extn": "5384"
    },
    {
        "name": "Donna Snider",
        "position": "Customer Support",
        "salary": "$112,000",
        "start_date": "2011/01/25",
        "office": "New York",
        "extn": "4226"
    }]
}

JavaScript:

/* Formatting function for row details - modify as you need */
function format ( d ) {
    // `d` is the original data object for the row
    return '<table cellpadding="5" cellspacing="0" border="0" style="padding-left:50px;">'+
        '<tr>'+
            '<td>Full name:</td>'+
            '<td>'+d.name+'</td>'+
        '</tr>'+
        '<tr>'+
            '<td>Extension number:</td>'+
            '<td>'+d.extn+'</td>'+
        '</tr>'+
        '<tr>'+
            '<td>Extra info:</td>'+
            '<td>And any further details here (images etc)...</td>'+
        '</tr>'+
    '</table>';
}
$(document).ready(function() {
    var table = $('#example').DataTable( {
        "ajax": "../ajax/data/objects.txt",
        "columns": [
            {
                "class":          'details-control',
                "orderable":      false,
                "data":           null,
                "defaultContent": ''
            },
            { "data": "name" },
            { "data": "position" },
            { "data": "office" },
            { "data": "salary" }
        ],
        "order": [[1, 'asc']]
    } );
    // Add event listener for opening and closing details
    $('#example tbody').on('click', 'td.details-control', function () {
        var tr = $(this).closest('tr');
        var row = table.row( tr );
        if ( row.child.isShown() ) {
            // This row is already open - close it
            row.child.hide();
            tr.removeClass('shown');
        }
        else {
            // Open this row
            row.child( format(row.data()) ).show();
            tr.addClass('shown');
        }
    } );
} );

官方:http://datatables.net/examples/api/row_details.html

点赞

发表评论