我的页面上有一个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;};
并且,这不会影响网格的任何行为 - 它会滚动到最左边的位置。
还有其他方法可以实现吗?
答案 0 :(得分:2)
在loadComplete函数
上尝试这个var offset = $("#" + *subgrid_table_id*).offset();
var w = $(window);
var fromTop = offset.top - w.scrollTop();
$('html, body').animate({
scrollTop: offset.top - fromTop
}, 1);
此代码保留网格的最后位置
答案 1 :(得分:0)
在setTimeout()中移动滚动代码,如:
的setTimeout(函数(){ grid2.closest( “UI-的jqGrid-BDIV”)scrollLeft(的scrollPosition)。 },100);
答案 2 :(得分:0)