jqGrid Reposicionar borrar cuadro de confirmación

Actualmente estoy usando jqGrid con navGrid, del set en verdadero. El problema es cuando un usuario hace clic en eliminar, aparece un cuadro de confirmación en la esquina superior izquierda de la cuadrícula. Como ya estamos desplazados hacia abajo hasta la parte inferior, que tengo una gran altura, el usuario tiene que ir hasta la parte superior para confirmar. ¿Hay alguna forma de mover la posición de esto? Una compensación manual está bien, pero idealmente quiero acoplarla en la parte inferior izquierda, como en la parte superior izquierda.

Gracias por adelantado

(Si esto es una tontería, lo siento. Intenté simplemente publicarlo, pero me dio un error extraño y no aparece en mi historial, así que asumí que no se publicó).

Encuentro que no es un tonto. Por el contrario, me parece bien, así que +1 de mí.

El jqGrid usa internamente el método viewModal ( $.jgrid.viewModal ) que muestra la mayoría de los cuadros de diálogo. El método tiene el parámetro toTop , pero y delGridRow y editGridRow no lo usan y se establecerá en toTop:true . Por lo tanto, los cuadros de diálogo Agregar, Editar y Eliminar aparecerán siempre en la parte superior de la cuadrícula, que puede estar dentro del área inviable.

Para solucionar el problema, puede definir el identificador de evento afterShowForm que cambia la posición del diálogo. Por ejemplo

 $("#list").jqGrid('navGrid','#pager', {}, {}, {}, { afterShowForm: function($form) { var dialog = $form.closest('div.ui-jqdialog'), selRowId = myGrid.jqGrid('getGridParam', 'selrow'), selRowCoordinates = $('#'+selRowId).offset(); dialog.offset(selRowCoordinates); } }); 

En el ejemplo, el diálogo se colocará sobre la fila seleccionada. El código se puede mejorar para el caso cuando la fila seleccionada en la última fila y la parte inferior del diálogo está fuera de la ventana. Sin embargo, la implementación anterior me parece mejor que la predeterminada porque el usuario ve el diálogo exactamente sobre la fila que desea eliminar y puede mover el diálogo para que esté completamente visible.

Puede probar el movimiento sugerido del diálogo Eliminar en la demostración en vivo .

Encontré algo mejor aquí !

agregue esto en su biblioteca de JavaScript:

 jQuery.fn.center = function () { this.css("position","absolute"); this.css("top", ( $(window).height() - this.height() ) / 2+$(window).scrollTop() + "px"); this.css("left", ( $(window).width() - this.width() ) / 2+$(window).scrollLeft() + "px"); return this; } 

Ahora solo necesita agregar esto en la propiedad afterShowForm:

 afterShowForm: function(form) { form.closest('div.ui-jqdialog').center(); } 

form.closest (‘div.ui-jqdialog’) => le permite obtener la ventana emergente modal, no necesita precisar si se trata de un editForm o un deleteForm.

Este código coloca la ventana emergente en el centro de la pantalla, por lo que no tiene que desplazarse si tiene una cuadrícula realmente grande.