Hello,
I've recently found DataTables and have found it to be a very powerful tool with an easy learning curve. I'm currently trying to implement something like the "DataTables hidden row details" rows example (located at: http://datatables.net/release-datatables/examples/api/row_details.html) -- but when I try to download the code in order to fiddle around with it, I get a working DataTable but none of the rows expand. I think this has something to do with the "extra" data (that is, the data showing in an expanded row) being stored in an array that (I'm assuming) is fetched from a server or something. I've only used datatables to enhance existing tables already in the DOM before so this is just a bit over my head.
What I was wondering, is if there was an example somewhere I would be able to download? Or if there's just a snippet of code I could add to "simulate" having that extra array? Whichever of these examples would be easiest to just get running as a static html file would be absolutely fine, I would just like to see how it works before plugging in my data.
And thanks in advance to anyone who has a sec to help me out with this! I really appreciate it.
It has this code
The first response solved my problem -- the live event isn't available for the version of jQuery I was using.
I've recently found DataTables and have found it to be a very powerful tool with an easy learning curve. I'm currently trying to implement something like the "DataTables hidden row details" rows example (located at: http://datatables.net/release-datatables/examples/api/row_details.html) -- but when I try to download the code in order to fiddle around with it, I get a working DataTable but none of the rows expand. I think this has something to do with the "extra" data (that is, the data showing in an expanded row) being stored in an array that (I'm assuming) is fetched from a server or something. I've only used datatables to enhance existing tables already in the DOM before so this is just a bit over my head.
What I was wondering, is if there was an example somewhere I would be able to download? Or if there's just a snippet of code I could add to "simulate" having that extra array? Whichever of these examples would be easiest to just get running as a static html file would be absolutely fine, I would just like to see how it works before plugging in my data.
And thanks in advance to anyone who has a sec to help me out with this! I really appreciate it.
It has this code
<script type="text/javascript" charset="utf-8"> /* Formating function for row details */ function fnFormatDetails ( oTable, nTr ) { var aData = oTable.fnGetData( nTr ); var sOut = '<table cellpadding="5" cellspacing="0" border="0" style="padding-left:50px;">'; sOut += '<tr><td>Rendering engine:</td><td>'+aData[1]+' '+aData[4]+'</td></tr>'; sOut += '<tr><td>Link to source:</td><td>Could provide a link here</td></tr>'; sOut += '<tr><td>Extra info:</td><td>And any further details here (images etc)</td></tr>'; sOut += '</table>'; return sOut; } $(document).ready(function() { /* * Insert a 'details' column to the table */ var nCloneTh = document.createElement( 'th' ); var nCloneTd = document.createElement( 'td' ); nCloneTd.innerHTML = '<img src="images/details_open.png">'; nCloneTd.className = "center"; $('#example thead tr').each( function () { this.insertBefore( nCloneTh, this.childNodes[0] ); } ); $('#example tbody tr').each( function () { this.insertBefore( nCloneTd.cloneNode( true ), this.childNodes[0] ); } ); /* * Initialse DataTables, with no sorting on the 'details' column */ var oTable = $('#example').dataTable( { "aoColumnDefs": [ { "bSortable": false, "aTargets": [ 0 ] } ], "aaSorting": [[1, 'asc']] }); /* Add event listener for opening and closing details * Note that the indicator for showing which row is open is not controlled by DataTables, * rather it is done here */ $('#example tbody td img').live('click', function () { var nTr = $(this).parents('tr')[0]; if ( oTable.fnIsOpen(nTr) ) { /* This row is already open - close it */ this.src = "images/details_open.png"; oTable.fnClose( nTr ); } else { /* Open this row */ this.src = "images/details_close.png"; oTable.fnOpen( nTr, fnFormatDetails(oTable, nTr), 'details' ); } } ); } ); </script> <table cellpadding="0" cellspacing="0" border="0" class="display" id="example"> <thead> <tr> <th>Rendering engine</th> <th>Browser</th> <th>Platform(s)</th> <th>Engine version</th> <th>CSS grade</th> </tr> </thead> <tbody> <tr class="gradeX"> <td>Trident</td> <td>Internet Explorer 4.0</td> <td>Win 95+</td> <td class="center">4</td> <td class="center">X</td> </tr> // ... (Lots of Table Rows Later) ... <tr class="gradeU"> <td>Other browsers</td> <td>All others</td> <td>-</td> <td class="center">-</td> <td class="center">U</td> </tr> </tbody> </table>
The first response solved my problem -- the live event isn't available for the version of jQuery I was using.