two sort propiedades ordenar multiple multi false columns javascript sorting jquery-datatables

javascript - sort - ordenar datatable jquery



jquery-datatables dirección de clasificación de múltiples columnas (4)

Utilizar

$(document).ready(function() { $(''#example'').DataTable({ filter:false, columnDefs: [ { orderData: [[1, ''asc''], [2, ''desc'']]//sort by age then by salary } ] }); });

JS Fiddle http://jsfiddle.net/b2fLye17/13/

Usando jquery-datatables.

Ejemplo: http://jsfiddle.net/b2fLye17/17/

$(''#example'').DataTable({ filter:false, columnDefs: [ { targets: [1],//when sorting age column orderData: [1,2] //sort by age then by salary } ] });

Cuando hace clic en la columna de edad, la tabla ordena por edad ascendente y por salario ascendente.

¿Cuáles serían mis opciones para ordenarlo por edad ascendente y luego por salario descendente?

Gracias !

-------------------------- Editar 1 ---------------------

Aclaración: cuando la columna de edad se clasifica en orden ascendente, debe ordenar por edad ascendente y luego por salario descendente. Cuando la columna de edad se clasifica descendente, debe ordenar por edad descendiendo luego por salario ascendente

-------------------------- Editar 2 ---------------------

Una imagen del resultado deseado


Aquí está. Se ha pirateado un poco, pero he estado gastando HORAS tratando de descubrir el mismo objetivo final: ordenar dos columnas. http://jsfiddle.net/b2fLye17/23/

<td data-age="40">$320</td> //In custom sort: var value = parseInt($(td).attr(''data-age'') + pad(td.innerHTML.substring(1), 10, ''0''));

Concepto: no he encontrado una manera de acceder a otras celdas fuera de la columna en el ciclo foreach, así que agregué un atributo "data-" a la celda de la que queremos ordenar. Este atributo de datos tiene el mismo valor que la otra columna de clasificación que nos importa ... por lo que hay algunos datos duplicados hasta que descubramos cómo acceder a otras células "adyacentes" en el ciclo.

Combiné los dos valores (atributo oculto y valor visible) y luego volví a convertirlo en int para indexarlo. Como los valores son longitudes diferentes, rellené la segunda columna con ceros (4086 vs 40086).


Puede hacer var row = settings.aoData._aData[i]; para obtener todos los datos de la fila y combinarlos con la solución j0xue para que pueda ordenar por otra columna sin agregar una propiedad en el html.


Gracias por hacer esta pregunta yo también enfrenté el mismo problema, luego lo resolví como abajo

var oTable=$(''#example'').dataTable({ filter:false }); oTable.fnSort( [[1,"asc"], [2,"desc"]]);

Espero que esto sea útil