AJAX - ¿Porqué no puedo ordenar las columnas de mi datatables del lado del servidor?

 
Vista:
Imágen de perfil de María Guadalupe
Val: 1
Ha disminuido su posición en 3 puestos en AJAX (en relación al último mes)
Gráfica de AJAX

¿Porqué no puedo ordenar las columnas de mi datatables del lado del servidor?

Publicado por María Guadalupe (1 intervención) el 31/08/2018 19:30:05
Tengo un problema en mi datatables del lado del servidor.

No puedo ordenar las columnas ya sea de forma ascedente o descendente; agregé las directivas de configuración como el "ordering", "aaSorting", "order", etc. pero no logró el ordenamiento de las columnas de mi listado.

En la consulta a mi base de datos, incluyo un ORDER BY en mi sentencia pero solo para mostrar el listado de mis registros ordenados una vez que entre el usuario a consultar datos.

Anexo mi código para ver que puede hacerme falta o si es necesario enviar datos a la base de datos para que el datatables haga el ordenamiento que se requiere de las columnas.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
$(document).ready(function () {
    var status = '<?= $status ?>';
    var oTable = $('#example').dataTable({
        "paging": true,
        "info": true,
        "filter": true,
        "stateSave": true,
        "ordering": true,
 
        "processing": true,
        "serverSide": true,
        "ajax": {
            "url": baseurl+"cl_clientes/cl_listado2/"+status,
            "type": "POST",
            "dataSrc": "data",
        },
        "oLanguage": {
            "sSearch": "Filtrar:",
            "sInfoEmpty": "Mostrando 0 a 0 de 0 registros.",
            "sZeroRecords": "No se encontraron coincidencias.",
            "sInfoFiltered": "(Filtrando de un total de _MAX_ registros)",
            "sLengthMenu": 'Mostrar <select>'+
                '<option value="25">25</option>'+
                '<option value="50">50</option>'+
                '<option value="75">75</option>'+
                '<option value="100">100</option>'+
                '<option value="-1">Todos</option>'+
                '</select> registros',
            "oPaginate": {
                "sFirst": "Primero",
                "sLast": "Ultimo",
                "sNext": ">>",
                "sPrevious": "<<"
              },
            "sInfo": "Mostrando _START_ a _END_ de _TOTAL_ registros",
            "oAria": {
                "sSortAscending":  ": Activar para ordenar la columna de manera ascendente",
                "sSortDescending": ": Activar para ordenar la columna de manera descendente"
            }
        },
        "order": [
            [ 1, "asc" ],
            [ 2, "asc" ],
            [ 3, "asc" ],
            [ 4, "asc" ],
            [ 5, "asc" ],
            [ 6, "asc" ],
            [ 7, "asc" ],
            [ 8, "asc" ],
            [ 9, "asc" ],
            [ 10, "asc" ],
            [ 11, "asc" ]
        ],
        "columns": [
            {"data": 'cl_id_cliente'},      // 0
            {"data": 'cl_id_cliente'},      // 1 
            {"data": 'cl_clave_cliente'},   // 2
            {"data": 'cl_nombre'},          // 3
            {"data": 'cl_nombre_empresa'},  // 4
            {"data": 'us_abreviatura'},     // 5
            {"data": 'rt_nombre'},          // 6
            {"data": 'cl_monto_debe'},      // 7
            {"data": 'cl_correo'} ,         // 8
            {"data": 'ds_nombre'},          // 9
            {"data": 'cl_celular'},         // 10
            {"data": 'cl_status_pedido'},   // 11
            {"data": 'cl_id_cliente'},      // 12
        ],
        "createdRow": function(row, data, dataIndex){
            if(data['cl_status'] == 0) {
                $(row).addClass("danger");
            }
        },
        "aoColumnDefs": [
            {
                "bSortable": false,
                "targets": [0],
                "render": function(data, type, row, meta){
                   if(type === 'display'){
                      data = '<input type="checkbox" value="2" name="check_'+row.cl_id_cliente+'" clave="'+row.cl_id_cliente+'" class="tableflat check_'+row.cl_id_cliente+'" />';
                   }
                   return data;
                },
                "checkboxes": {
                   "selectRow": true,
                   "selectAllRender": '<input style="width: 20px; height: 20px;" class="check_principal dt-checkboxes" onClick="ChequearAlgunos2('+this+','+2+');"   name="2" type="checkbox" value="2" id="2"/>'
                }
            },
            { 
                "targets": [3],
                "render": function (data, type, row) {
                    return '<div data-toggle="tooltip" title="" data-original-title="">'+
                            row.cl_nombre+' '+row.cl_apellido_paterno+' '+row.cl_apellido_materno
                            '</div>';
                }
            },
            {
                "targets": [5],
                "render": function (data, type, row) {
                    return '<div data-toggle="tooltip" title="" data-original-title="">'+
                            row.us_abreviatura
                            //row.us_nombre+' '+row.us_apellido_paterno+' '+row.us_apellido_materno
                            '</div>';
                }
            },
             {
                "targets": [7],
                "render": function (data, type, row) {
                    var monto = 0;
 
                    if(row.cl_monto_debe == 0){
                        monto_debe = '$'+parseFloat(monto).toFixed(2);
                    } else {
                        monto_debe = '$'+parseFloat(row.cl_monto_debe).toFixed(2);
                    }
                    return monto_debe;
                }
            },
             {
                "bSortable": false,
                "targets": [12],
                "render": function (data, type, row) {
                    /* Ligas para editar, activar o desactivar un cliente */
                    if(row.cl_status == 1){
                        buttons = '<a href="'+baseurl+'cl_clientes/editar/'+row.cl_id_cliente+'">'+
                            '<button type="button" class="btn color-primario btn-sm"><i class="fa fa-edit"></i></button>'+
                            '</a>'+
                            '<button onClick="statusClientee('+row.cl_id_cliente+', '+0+')" type="button" class="btn btn-danger btn-sm" clave="'+row.cl_id_cliente+'">'+
                            '<i class="fa fa-close"></i></button>';
                    }
                    if(row.cl_status == 0){
                        buttons = '<a href="'+baseurl+'cl_clientes/editar/'+row.cl_id_cliente+'">'+
                            '<button type="button" class="btn color-primario btn-sm"><i class="fa fa-edit"></i></button>'+
                            '</a>'+
                            '<button onClick="statusClientee('+row.cl_id_cliente+', '+1+')" type="button" class="btn color-secundario btn-sm" clave="'+row.cl_id_cliente+'">'+
                            '<i class="fa fa-check"></i></button>';
                    }
                    return buttons;
                }
            },
        ],
        "iDisplayLength": 25,
    });
 
});


Agradezco de su atenta respuesta a mi duda sobre el ordenamiento de columnas en mi datatable del lado del servidor.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 4
Ha disminuido 1 puesto en AJAX (en relación al último mes)
Gráfica de AJAX

¿Porqué no puedo ordenar las columnas de mi datatables del lado del servidor?

Publicado por Ismael (3 intervenciones) el 11/09/2018 21:12:37
Hola, el enunciado tendrías que replantearlo, ya que estas usando un datatable de jquery, no un datatable de servidor, el problema lo tienes al inicializar el datatable con esos datos. Aunque órdenes en base de datos con la query, el datatable de jquery lo va a ordenar como lo tengas definido. Por lo que la ordenación en el sql no va a valer de nada.
Un Saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar