我目前正在使用带有navGrid的jqGrid,del设置为true。问题是当用户点击删除时,它会弹出网格左上角的确认框。由于我们已经向下滚动到底部,我有一个很大的高度,用户必须一直到顶部确认。有没有办法移动这个位置?手动偏移很好,但理想情况下我想将它停靠在左下角,就像左上方一样。
提前致谢
(如果这是一个骗局,我很抱歉。我试着发布它,但它给了我一些奇怪的错误,并没有在我的历史中显示,所以假设它没有发布。)
答案 0 :(得分:9)
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);
}
});
在示例中,对话框将放置在所选行上。当对话框的最后一行和底部的选定行位于窗口之外时,可以改进代码。然而,上面的实现似乎更好,因为用户看到对话框正好在他要删除的行上,他可以移动对话框,使其完全可见。
您可以在the live demo上测试删除对话框的建议移动。
答案 1 :(得分:7)
找到更好的东西here!
在您的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则无需精确。
此代码将弹出窗口置于屏幕中央,因此如果您的网格非常大,则无需滚动。