【发布时间】:2012-12-03 00:26:54
【问题描述】:
jqgrid 高级搜索对话框窗口大小和位置可以通过鼠标改变。
这些更改不会被记住。 下次打开,显示默认大小和位置。
如何保存和恢复它,可能使用本地存储。 如果屏幕分辨率或大小发生变化,还应检查搜索对话框的一部分是否可见。
更新
我也尝试使用下面的代码扩展 Oleg 答案以保存/恢复窗口位置。 搜索窗口恢复到与最初不同的位置。看起来使用下面的代码检索的 left 和 top 值是错误的。如何恢复位置呢?
var oldJqDnRstop, searchParams = { width: 550, left: 5, top: 5 };
if ($.jqDnR) {
oldJqDnRstop = $.jqDnR.stop; // save original function
$.jqDnR.stop = function (e) {
var $dialog = $(e.target).parent(), dialogId = $dialog.attr("id");
oldJqDnRstop.call(this, e); // call original function
if (typeof dialogId === "string" && dialogId.substr(0, 14) === "searchmodfbox_") {
// save the dialog position here
// we save "width" option as the property of searchParams object
// used as parameter of navGrid
searchParams.width = $dialog.width();
searchParams.left = $dialog.offset().left;
searchParams.top = $dialog.offset().top;
saveWindowState();
}
};
}
更新2
在 Oleg 演示中,对话框标题可以移动到浏览器窗口之外。之后对话框不再可移动。如何解决这个问题?
【问题讨论】:
-
你能提供一个jsfiddle.net吗?
-
如果在搜索参数中使用了
recreateFilter: true,就会出现这种情况。每次使用默认宽度和位置重新创建搜索表单