如何在内联编辑时保持jqGrid的水平滚动位置?

时间:2011-05-26 13:54:56

标签: jquery jqgrid

我的页面上有一个jqGrid表,有很多列,所以网格比浏览器窗口宽,出现水平滚动条。

问题是,当用户点击一行开始编辑时,浏览器框架会向左滚动,从而使用户感到困惑甚至有时会隐藏所选择的单元格。

我已经尝试过我发现herehere的方法,但它们对我不起作用 - 我可以检索当前滚动位置,但我无法设置它。 单元格在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;};

并且,这不会影响网格的任何行为 - 它会滚动到最左边的位置。

还有其他方法可以实现吗?

3 个答案:

答案 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)