Foros del Web » Programando para Internet » Jquery »

Ordenar varias columnas al mismo tiempo con DATA TABLE

Estas en el tema de Ordenar varias columnas al mismo tiempo con DATA TABLE en el foro de Jquery en Foros del Web. Buen dia, voy a ir al grano, tengo una tabla dinámica en donde cargo los datos de mi base de datos. en el cuerpo de ...
  #1 (permalink)  
Antiguo 27/11/2014, 19:49
 
Fecha de Ingreso: septiembre-2013
Ubicación: Bogota
Mensajes: 139
Antigüedad: 10 años, 7 meses
Puntos: 0
Ordenar varias columnas al mismo tiempo con DATA TABLE

Buen dia, voy a ir al grano,

tengo una tabla dinámica en donde cargo los datos de mi base de datos. en el cuerpo de la tabla tengo unos valores, debo ordenar los valores de cada columna de mayor a menor. Estoy utilizando la libreria data table para tablas dinamicas, y la funcion que estoy implementando para esto es "columns.orderData" con la siguiente sintaxis pero no me ordena como deberia, o la verdad no entiendo muy bien como funciona:

Código PHP:
        echo "<table id='abaco' border>
        <thead>
        <tr>
            <th>ITEM</th>"
;
        foreach (
$items2 as $e=>$ex) {
            foreach(
$ex as $llave=>$valor){
            echo 
"<th>$llave</th>";
            }
            break;
        }
        echo 
"<th>Ordenar</th>";
        echo 
"</thead>";
        echo 
"<tbody>";
        foreach (
$items2 as $it=>$vlr_items) {
            echo 
"<tr>";
            echo 
"<td bgcolor=#F2F5A9>$it</td>";
            
$suma 0;
            
$count 0;    
            foreach (
$vlr_items as $va=>$valores_vect) {
                
$suma $valores_vect+$suma;
                
$count++;            
                    echo 
"<td $valores_vect </td>";
            }
            echo 
"<td><center><font size='1'>$suma</font></center></td>";
            echo 
"</tr>";
            }
        echo 
"</tbody>";
        echo 
"</table>"

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.   $(document).ready(function() {
  3.         $('#abaco').dataTable( {
  4.             columnDefs: [ {
  5.                 targets: [ 1 ],
  6.                 orderData: [ 1, 2 ]
  7.             }, {
  8.                 targets: [ 2 ],
  9.                 orderData: [ 2, 3 ]
  10.             }
  11.  
  12.             ]
  13.         } );
  14.     } );
  15.   </script>

Alguien que por favor me colabore. Gracias.
  #2 (permalink)  
Antiguo 27/11/2014, 22:55
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Ordenar varias columnas al mismo tiempo con DATA TABLE

Para que no te compliques, lo puedes hacer así (ejemplo):

Código HTML:
Ver original
  1. <table id = "foo">
  2.     <thead>
  3.         <tr>
  4.             <th>Nombre</th>
  5.             <th>Edad</th>
  6.         </tr>
  7.     </thead>
  8.     <tbody>
  9.         <tr>
  10.             <td>Juan</td>
  11.             <td>25</td>
  12.         </tr>
  13.         <tr>
  14.             <td>María</td>
  15.             <td>38</td>
  16.         </tr>
  17.         <tr>
  18.             <td>Elena</td>
  19.             <td>42</td>
  20.         </tr>
  21.     </tbody>

Código Javascript:
Ver original
  1. $("#foo").dataTable({
  2.     order: [[0, "asc"], [1, "desc"]]
  3. });

Lo que hago es bastante simple. Al atributo order, le asigno un array asociativo, en el cual habrán dos arrays pues la tabla solo tiene dos columnas. La primera, tendrás sus valores ordenados de forma ascendente, mientras que la segunda, de forma descendente. El 0 y el 1 indican los números de columnas afectadas, recordando que siempre se empieza la cuenta desde el cero.

DEMO

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: columnas, data, funcion, javascript, table, tiempo, valor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:20.