Oracle APEX中IG自动保存后滚动位置无法正确获取问题求助
解决Interactive Grid自动保存后恢复滚动位置的问题
问题根源:你直接获取外层区域
#PENDINGORDERS的scrollTop返回0,是因为IG的滚动容器并非外层region元素,而是其内部的特定子元素(IG的内容滚动区)。外层容器通常没有设置滚动属性,自然无法获取有效滚动位置。正确实现步骤:
- 定位IG的实际滚动容器:IG的内容滚动区对应类名为
.a-GV-content的div元素,可通过IG实例获取。 - 保存滚动位置:在执行保存操作前,先获取该滚动容器的
scrollTop值。 - 异步恢复滚动位置:由于
save操作是异步的,需在保存成功的回调中执行恢复操作,确保分页重置完成后再恢复位置。
- 定位IG的实际滚动容器:IG的内容滚动区对应类名为
完整代码示例:
// 获取IG的grid视图实例 const igGrid = apex.region("PENDINGORDERS").widget().interactiveGrid("getViews", "grid"); // 获取实际滚动容器 const scrollContainer = igGrid.element.find(".a-GV-content")[0]; // 保存当前滚动位置和页码(如果需要恢复分页) const saveScrollPos = scrollContainer.scrollTop; const currentPage = igGrid.model.getPage(); // 执行自动保存并在成功后恢复状态 apex.region("PENDINGORDERS").widget().interactiveGrid("getActions").invoke("save", { success: function() { // 恢复页码 igGrid.model.setPage(currentPage); // 恢复滚动位置 scrollContainer.scrollTop = saveScrollPos; } });
- 补充说明:如果你的IG使用了其他视图(如卡片视图),滚动容器的类名可能不同,但grid视图下
.a-GV-content是标准的滚动容器类名。你可以通过浏览器开发者工具查看IG的DOM结构,确认滚动容器的具体选择器。
内容的提问来源于stack exchange,提问作者feno noga
相关产品推荐
相关产品推荐

