Tengo un cuadro de diálogo jQueryUI (#locDialog
) que tiene un jqGrid ($grid
) dentro de él. Cuando se abre el cuadro de diálogo (inicialmente, pero se llama cada vez que se abre), quiero que el $grid
cambie el tamaño al $locDialog
. Cuando hago esto inicialmente, obtengo barras de desplazamiento dentro de la grilla (no dentro del diálogo).Llamar correctamente a setGridWidth en un jqGrid dentro de un cuadro de diálogo jQueryUI
Si puedo depurar el código, veo el ancho de la $grid
es 677. Por lo tanto, llamar setGridWidth()
de nuevo y comprobar el ancho y ahora tengo 659, que es menos 18px, que es el tamaño de la zona de desplazamiento para jqGrid (Dun-dun-dun ..)
Cuando actualizo el cuadro de diálogo, también cambio el tamaño de la cuadrícula, y todo está contento, sin barras de desplazamiento, excepto cuando sea necesario.
diálogo Mis código de inicio:
$locDialog = $('#location-dialog').dialog({
autoOpen: false,
modal: true,
position: ['center', 100],
width: 700,
height:500,
resizable: true,
buttons: {
"Show Selected": function() {alert($('#grid').jqGrid('getGridParam','selarrrow'));},
"OK": function() {$(this).dialog('close');},
"Cancel": function() {$(this).dialog('close');}
},
open: function(event, ui) {
$grid.setGridHeight($(this).height()-54);
// No idea why 54 is the magic number here
$grid.setGridWidth($(this).width(), true);
},
close: function(event, ui) {
},
resizeStop: function(event, ui) {
$grid.setGridWidth($locDialog.width(), true);
$grid.setGridHeight($locDialog.height()-54);
}
});
Tengo curiosidad si alguien ha visto esto antes. Realmente, no es el fin del mundo si inicialmente tengo barras de desplazamiento innecesarias al principio, pero es extraño que cuando llamo a setGridWidth inicialmente, no tenga en cuenta el área de desplazamiento de 18px.
En cuanto al número mágico 54, ese es el número que tuve que restar del alto del valor de diálogo para obtener la cuadrícula para representar sin barras de desplazamiento innecesarias.
Creo que puede ser un problema de tiempo, aunque esto no tiene mucho sentido. Tal vez debería llamar a un evento una vez que la grilla esté completamente cargada. Esto puede asegurar que calcula su ancho correctamente.
Definitivamente voy a echarle un vistazo, Oleg, muchas gracias por el código. No estoy demasiado preocupado en este punto ya que el problema solo ocurre justo cuando el usuario abre un diálogo. Una vez que cambian de tamaño/recarga, se arregla solo. De nuevo, probablemente sea un problema de tiempo. Gracias de nuevo: D – Dan
@Oleg: ¿Puedes ver algo similar [pregunta] (http://stackoverflow.com/questions/8292341/horizontal-scroll-bar-in-jqgrid-when-needed) – Ricky
Sé que esto es un respuesta anterior pero ... Intenté usar este código pero no funciona correctamente. He usado la función 'fixGridWidth' de @ Oleg y sí, cambia el tamaño de la cuadrícula. Pero las columnas permanecen con el mismo tamaño, por lo que queda la mitad de la cuadrícula vacía, las columnas no cambian de tamaño. ¿Sabes cómo cambiar el tamaño de las columnas también? – Isthar