Estoy usando una tabla Jquery Datatables con bPaginate = false y sScrollY es una altura fija. En última instancia, quiero que la tabla cambie de tamaño en el evento window.resize.Tablas de datos: Cambiar la altura de la tabla no funciona
Para conseguir que esto funcione he construido un caso de prueba más pequeños: En los siguientes fragmentos de código que quiero la mesa para cambiar el tamaño al hacer clic en el botón
HTML:
<!DOCTYPE html>
<html>
<head>
<link class="jsbin" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/base/jquery-ui.css" rel="stylesheet" type="text/css" />
<script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/jquery-ui.min.js"></script>
<script type="text/javascript" language="javascript" src="http://www.datatables.net/release-datatables/media/js/jquery.dataTables.js"></script>
<meta charset=utf-8 />
<title>JS Bin</title>
</head>
<body>
<input id="button" type="button" value="Click me!" />
<table cellpadding="0" cellspacing="0" border="0" class="display" id="example">
<thead>
<tr>
<th>Rendering engine</th>
<th>Browser</th>
<th>Platform(s)</th>
<th>Engine version</th>
<th>CSS grade</th>
</tr>
</thead>
<tbody>
<tr class="odd gradeX">
<td>Trident</td>
<td>Internet
Explorer 4.0</td>
<td>Win 95+</td>
<td class="center"> 4</td>
<td class="center">X</td>
</tr>
<tr class="even gradeC">
<td>Trident</td>
<td>Internet
Explorer 5.0</td>
<td>Win 95+</td>
<td class="center">5</td>
<td class="center">C</td>
</tr>
<tr class="odd gradeA">
<td>Trident</td>
<td>Internet
Explorer 5.5</td>
<td>Win 95+</td>
<td class="center">5.5</td>
<td class="center">A</td>
</tr>
</tbody>
<tfoot>
<tr>
<th>Rendering engine</th>
<th>Browser</th>
<th>Platform(s)</th>
<th>Engine version</th>
<th>CSS grade</th>
</tr>
</tfoot>
</table>
</body>
</html>
Javascript:
$('#button').click(function() {
console.log('Handler for .click() called.');
table = $('#example').dataTable();
settings = table.fnSettings();
console.log('old:' + settings.oScroll.sY);
settings.oScroll.sY = '150px';
console.log('new:' + settings.oScroll.sY);
table.fnDraw(false);
});
$('#example').dataTable({
"sScrollY": "350px",
"bPaginate": false,
"bJQueryUI": true
});
salida
consola es el esperado:
Handler for .click() called.
old:350px
new:150px
¡pero la tabla no se actualiza! ¿Alguna idea de lo que estoy haciendo mal?
Un ejemplo vivo se puede encontrar aquí: http://jsbin.com/anegiw/12/edit
intenta configurar "bDestroy": verdadero –
Eso reiniciaría la tabla, por lo que podría funcionar para este fragmento particular. Pero, ¿sería apropiado para un controlador de eventos window.resize, que se llama muchas veces durante el cambio de tamaño de la ventana de broser? – dwergkees
En realidad, acabo de probarlo en el evento window.resize: funciona pero es terriblemente lento, incluso en una máquina moderna – dwergkees