Ayuda a listar con datatable
Publicado por Pepe (13 intervenciones) el 25/08/2020 21:07:42
Hola buenas, estoy mostrando unos datos, con datatable y tengo un error del cual puede ser cómo está planteada la lógica de mi aplicación.
Lo que pretendo hacer es listar unos datos de productos con datatable, y apartir de unos botones, listar otros datos distintos por la id de esos botones, estos botones, los genero mediante otro de forma dinámica.
La primera vez que listo los productos, me va bien, pero luego si pulso otra vez en el boton, como que se me borra la instancia de datatable. Dejo mi código a ver si alguien, me puede hecha una mano.
A lo mejor es que está planteada mi lógica, y se podría hacer de una forma mejor y más eficiente.
Los botones que se cargan
Metodo del controlador
Metodo de mi modelo
La vista de los productos que es la que me está dando fallos, la primera vez me muestra bien el datatable, pero al pulsar otra vez en los botones, como que se crea de nuevo la instancia de la datatable y de la const idiomaES , y me da error, no se que podría ser, a lo mejor el planteamiento está mal. pues estas vistas se cargan por ajax,
Me da estos errores
error Uncaught SyntaxError: Identifier 'idiomaES' has already been declared
Failed to load resource: the server responded with a status of 404 (Not Found)
sort_asc.png:1 Failed to load resource: the server responded with a status of 404 (Not Found)
sort_desc.png:1 Failed to load resource: the server responded with a status of 404 (Not Found)
Lo que pretendo hacer es listar unos datos de productos con datatable, y apartir de unos botones, listar otros datos distintos por la id de esos botones, estos botones, los genero mediante otro de forma dinámica.
La primera vez que listo los productos, me va bien, pero luego si pulso otra vez en el boton, como que se me borra la instancia de datatable. Dejo mi código a ver si alguien, me puede hecha una mano.
A lo mejor es que está planteada mi lógica, y se podría hacer de una forma mejor y más eficiente.
Los botones que se cargan
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
<div class="container contenedorBtns">
<button id="btn" class="btn btn-info" type="button">Cargar Botones Del Menu</button>
<br>
<hr>
<dvi class="btn-group"></dvi>
</div>
<dvi class="contenidoBtns"></dvi>
</div>
<script>
const btns = `
<br>
<div class="btn-group">
<button id="btnP0" class="btn btn-info" type="button">Por Precio</button>
<button class="btn btn-info" type="button" id="btnP1">Por Tipo</button>
<button class="btn btn-info" type="button"id="btnP2">Codigo</button>
</div>
<br>
<hr>
`;
$("#btn").on('click', function(){
$(".btn-group").empty();
$(".btn-group").append(btns);
//mediante el id del boton mostraré una lista u otra en la llamada al controlador
$("button[type='button']").on('click', function(){
let idBtns = this.id;
$.ajax({
url: "prueba/getProducts/"+idBtns,
type: 'POST',
dataType : 'html'
}).done(function (e){
$(".contenidoBtns").html(e);
})
})
})
</script>
Metodo del controlador
1
2
3
4
5
6
7
8
9
10
function getProducts($idBtns = null){
$datos[]=[];
$datos['datosProducts'] = $this->consulta_model->getProducts();
if($idBtns!== null){
//hacer switch case para las distintas vistas con las distintas listas
$datos['datosProducts'] = $this->consulta_model->getProducts($idBtns);
}
$this->load->view('products', $datos);
}
1
2
3
4
5
6
7
8
function getProducts(){
//coger id del boton para aplicar un filtro
$consulta = $this->db->query("SELECT * FROM products");
if($consulta->num_rows() > 0){
return $consulta->result_array();
}
}
La vista de los productos que es la que me está dando fallos, la primera vez me muestra bien el datatable, pero al pulsar otra vez en los botones, como que se crea de nuevo la instancia de la datatable y de la const idiomaES , y me da error, no se que podría ser, a lo mejor el planteamiento está mal. pues estas vistas se cargan por ajax,
Me da estos errores
error Uncaught SyntaxError: Identifier 'idiomaES' has already been declared
Failed to load resource: the server responded with a status of 404 (Not Found)
sort_asc.png:1 Failed to load resource: the server responded with a status of 404 (Not Found)
sort_desc.png:1 Failed to load resource: the server responded with a status of 404 (Not Found)
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
<div class="container">
<table id="tablaPrueba" class="table table-striped table-inverse table-responsive">
<thead class="thead-inverse">
<tr>
<th>Codigo Producto</th>
<th>Nombre del Producto</th>
<!-- <th>Descripción del Producto</th>
<th>Precio del Producto</th> -->
</tr>
</thead>
<tbody>
<?php
foreach($datosProducts as $producto){
?>
<tr>
<td scope="row"> <?php echo $producto['productCode'] ?> </td>
<td><?php echo $producto['productName'] ?> </td>
<!-- <td><?php echo $producto['productDescription'] ?> </td>
<td><?php echo $producto['buyPrice'] ?> </td> -->
</tr>
<?php
}
?>
</tbody>
</table>
</div>
<script>
$(document).ready( function () {
$('#tablaPrueba').DataTable({
"language": idiomaES
});
} );
const idiomaES = {
"sProcessing": "Procesando...",
"sLengthMenu": "Mostrar _MENU_ registros",
"sZeroRecords": "No se encontraron resultados",
"sEmptyTable": "Ningún dato disponible en esta tabla",
"sInfo": "Mostrando registros del _START_ al _END_ de un total de _TOTAL_ registros",
"sInfoEmpty": "Mostrando registros del 0 al 0 de un total de 0 registros",
"sInfoFiltered": "(filtrado de un total de _MAX_ registros)",
"sInfoPostFix": "",
"sSearch": "Buscar:",
"sUrl": "",
"sInfoThousands": ",",
"sLoadingRecords": "Cargando...",
"oPaginate": {
"sFirst": "Primero",
"sLast": "Último",
"sNext": "Siguiente",
"sPrevious": "Anterior"
},
"oAria": {
"sSortAscending": ": Activar para ordenar la columna de manera ascendente",
"sSortDescending": ": Activar para ordenar la columna de manera descendente"
},
"buttons": {
"copy": "Copiar",
"colvis": "Visibilidad"
}
};
</script>
Valora esta pregunta


0