如果滚动到免费 jqgrid 中最右边的位置,如何同步 header 和列分隔线

How to sync header and column separator lines if scrolled to rightmost position in free jqgrid

如果 jqgrid 滚动到最右边的位置,列分隔线超出 sunc。

要重现,请使 jqgrid 比浏览器 window 宽或减小浏览器 window 宽度,以便出现水平滚动条并水平滚动到最右边的位置。 Header 和列分隔符的竖线位置不同。

如何解决这个问题?

您的代码很长。有人调试您的代码不是 Whosebug 的目标。你能准备一个重现问题的小演示吗?

我调试了代码,可以看到网格在初始加载时没有水平条。免费的 jqGrid 包含在加载数据后检测网格是否包含水平条 。它将 hbox 的 padding-right(div 是 hdiv 的子项并且具有 class ui-jqgrid-hbox)设置为滚动条的宽度:bDiv.offsetWidth - bDiv.clientWidth(参见代码的 the line and this one)。

如果您单击网格的重新加载网格按钮,则滚动条的问题将得到解决。所以我假设您在加载数据后在页面上进行了一些更改。结果网格得到水平滚动条。 jqGrid 未检测到更改,因此存在问题。

您可以做的是手动调用 fixScrollOffsetAndhBoxPadding 方法 在您对包含水平滚动条的页面进行不清楚的更改后 。例如,您可能只是更改了网格的宽度(可能 $grid.jqGrid('setGridWidth', $('#grid1container').width(), false);)。

你可以做的只是包括调用

$grid[0].fixScrollOffsetAndhBoxPadding();

将在网格滚动条之后的某处创建。 fixScrollOffsetAndhBoxPadding 是 public,它是网格 DOM 的成员(请参阅 the line)。上面的代码应该可以工作。

如果我在调试器的控制台中执行 $("#grid")[0].fixScrollOffsetAndhBoxPadding(); 行,我发现问题将得到解决。