live DOM sorting?

live DOM sorting?

joejoejoejoe Posts: 4Questions: 0Answers: 0
edited March 2010 in Plug-ins
I'm checking the DOM sorting example at "".
I'll make the first column elements dynamic with some PHP code.
I'm wondering how to get each element in the tag, such as "Gecko", "Gecko", etc.
The following code doesn't work.

$.fn.dataTableExt.afnSortData['dom-try'] = function ( oSettings, iColumn )
var aData = [];
$( 'td:eq('+iColumn+')', oSettings.oApi._fnGetTrNodes(oSettings) ).each( function () {
aData.push( this.value );
} );
return aData;

Any help is greatly appreciated. :)


  • joejoejoejoe Posts: 4Questions: 0Answers: 0
    Oh. I'm stupid!

    It works after changing

    aData.push( this.value );


    aData.push( $(this).text());

  • dh1dh1 Posts: 3Questions: 0Answers: 0
    my code works beautifully, now that i've found this post!
    For my next trick, i want to be able to use the same kind of sort function but from an external link. is this possible?

    I have a UL containing 3 list items in each cell of one of my columns -- i use a modified version of the DOM sorting function to get the desired list item, like this:
    $('td:eq(' + iColumn + ') ul li.Choice1, oSettings.oApi._fnGetTrNodes(oSettings)).each(function() {

    i have three functions, to handle li.Choice1, li.Choice2 and li.Choice3 -- how do i tell my dataTable to change the kind of sort used for a given column, and resort according to that choice? Do i need to destroy and recreate my dataTable with the new Sort Type?
  • allanallan Posts: 58,921Questions: 1Answers: 9,490 Site admin
    The sorting function which is used for each column is based on the 'sType' for that column: .

    The sType name is used to pick out the required sorting function (for example 'dom' in the example at the bottom of this page: ). You can rename that to whatever you want, and have as many as you want.

  • dh1dh1 Posts: 3Questions: 0Answers: 0
    Allan --
    Thanks for replying so quickly. The documentation was just perfect for getting me to this point -- i've created the sort functions, and if I set any of them for the initial sort, it works fine. The problem is that when i try to change the sType for a given column after the data's been loaded, i can't use the .datatable() function again -- i get a message saying "DataTables warning: Unable to re-initialise DataTable. Please use the API to make any configuration changes required".

    How do i specify a different "sort key" after the table has been initialized?
  • allanallan Posts: 58,921Questions: 1Answers: 9,490 Site admin
    It's not really supported behaviour - but what you could do is to set the sType for the column in the settings object. So something like:

    oTable.fnSettings().aoColumn[0].sType = "whatever";
    would change the sorting type. Then just resort the table to have it take effect. But as I say, this wasn't an expected interaction :-)

This discussion has been closed.