我目前正在使用带有navGrid的jqGrid,del设置为true.问题是当用户点击删除时,它会弹出网格左上角的确认框.由于我们已经向下滚动到底部,我有一个很大的高度,用户必须一直到顶部确认.有没有办法移动这个位置?手动偏移很好,但理想情况下我想将它停靠在左下方,如左上方所示.
提前致谢
(如果这是一个骗局,我很抱歉.我试过发布它,但它给了我一些奇怪的错误,并没有在我的历史中显示,所以假设它没有发布.)
我发现不是一个骗局.相反,我发现它很好,所以+1来自我.
jqGrid在内部使用显示最多对话框的method 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);
}
});
Run Code Online (Sandbox Code Playgroud)
在该示例中,对话框将放置在所选行上.当对话框的最后一行和底部的选定行位于窗口之外时,可以改进代码.尽管如此,上面的实现似乎更好地作为默认实现,因为用户看到对话框正好在他想要删除的行上,并且他可以移动对话框以使其完全可见.
您可以在实时演示中测试"删除"对话框的建议移动.
小智 7
找到更好的东西在这里!
在您的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;
}
Run Code Online (Sandbox Code Playgroud)
现在你只需要在afterShowForm属性中添加它:
afterShowForm: function(form) {
form.closest('div.ui-jqdialog').center();
}
Run Code Online (Sandbox Code Playgroud)
form.closest('div.ui-jqdialog')=>允许你获取模态弹出窗口,如果是editForm或deleteForm则无需精确.
此代码将弹出窗口放在屏幕的中央,因此如果您的网格非常大,则无需滚动.
| 归档时间: |
|
| 查看次数: |
14088 次 |
| 最近记录: |