我的页面上有一个 jqGrid 表格,有很多列,因此网格比浏览器窗口宽,出现水平滚动条。
问题是,当用户单击一行开始编辑时,浏览器框架会向左滚动,从而使用户感到困惑,甚至有时会隐藏所选单元格。
我已经尝试过我找到的方法 here和 here ,但它们对我不起作用 - 我可以检索当前的滚动位置,但无法设置它。 单元格在 columnsModel 中设置为可编辑,因此我在 formatCell 事件中获取滚动位置,并尝试使用以下代码在 afterEditCell 中设置滚动位置:
afterEditCell: function(rowid, cellname, value, irow, icol) {
jQuery("#list").closest(".ui-jqgrid-bdiv").scrollLeft(scrollPosition);
window.scrollTo(scrollPosition,0);
if (window.pageXOffset) {window.pageXOffset = scrollPosition;};
if (document.body.parentElement) {document.body.parentElement.scrollLeft = scrollPosition;};
if (document.body) {document.body.scrollLeft = scrollPosition;};
而且,这不会影响网格的行为 - 它滚动到最左边的位置。
还有其他方法可以实现吗?
最佳答案
在 loadComplete 函数上尝试这个
var offset = $("#" + *subgrid_table_id*).offset();
var w = $(window);
var fromTop = offset.top - w.scrollTop();
$('html, body').animate({
scrollTop: offset.top - fromTop
}, 1);
此代码保留网格的最后位置
关于jquery - 内联编辑时如何保持jqGrid的水平滚动位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6139681/