jqGrid重新定位删除确认框

我目前正在使用带有navGrid的jqGrid,del设置为true。 问题是当用户点击删除时,它会弹出网格左上角的确认框。 由于我们已经向下滚动到最底部,我有一个很大的高度,用户必须一直到顶部确认。 有没有办法改变这个位置? 手动偏移很好,但理想情况下我想将它停靠在左下方,如左上方所示。

提前致谢

(如果这是一个骗局,我很抱歉。我试着发布它,但它给了我一些奇怪的错误,并没有在我的历史中显示,所以假设它没有发布。)

我发现这不是一个骗局。 相反,我发现它很好,所以+1来自我。

jqGrid在内部使用方法viewModal$.jgrid.viewModal ),它显示了最多的对话框。 该方法有toTop参数,但是delGridRow和editGridRow不使用它,它将被设置为toTop:true 。 因此,添加,编辑和删除对话框将始终显示在网格的顶部,该网格可以位于可访问区域内。

要解决此问题,您可以定义更改对话框位置的afterShowForm事件句柄。 例如

 $("#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); } }); 

在该示例中,对话框将放置在所选行上。 当对话框的最后一行和底部的选定行位于窗口之外时,可以改进代码。 尽管如此,上面的实现似乎更好地作为默认实现,因为用户看到对话框正好在他想要删除的行上,并且他可以移动对话框以使其完全可见。

您可以在现场演示中测试“删除”对话框的建议移动。

在这里发现更好的东西

在您的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; } 

现在你只需要在afterShowForm属性中添加它:

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

form.closest(’div.ui-jqdialog’)=>允许你获取模态弹出窗口,如果是editForm或deleteForm则无需精确。

此代码将弹出窗口置于屏幕的中央,因此如果您的网格非常大,则无需滚动。