从更新面板异步回发后保持滚动位置
Maintain scroll position after async postback from update panel
我在使用asp.net和更新面板时遇到了一些麻烦。问题是,每次从更新面板发生部分回发时,页面都会滚动回顶部。在我的大多数页面上,这不是一个大问题,但在某些页面上可能会变得相当长。然后,当用户位于页面底部时,我在其中显示了带有RadListView
的jQuery弹出框,用户可以在此列表中选择元素。但是点击这个元素会导致部分回发,页面跳转到顶部。
我在网上找过了,找不到任何解决我问题的方法。当然设置MaintainScrollPositionOnPostback
没有任何作用。
欢呼,Pako
有一个解决这个问题的小方法,我很久以前在一个ERP中使用过。我不确定这是不是最好的解决方案,但它确实有效。
我不知道您是使用自定义Page类还是默认的System.Web.UI.Page
类,但是,我会尝试向您解释如何做到这一点,然后您找到在您的环境中实现它的最佳方式,好吗?
您将创建一个HiddenField
,例如,其ID为"hfScrollPosition"。
document.onscroll
或类似的东西,并在事件中更新隐藏字段以获取当前滚动位置。例如:document.getElementById("hfScrollPosition").value = document.documentElement.scrollTop;
这样做,你将有一个ASP。. NET控件根据滚动体的位置动态地更新其值。因此,当页面中的某些控件进行回发时,可以在Page_Load事件中放入以下javascript代码:
document.documentElement.scrollTop = document.getElementById("hfScrollPosition").value;
所以,每次你的页面得到一个回发,正文滚动位置将被正确更新。
EDIT:我做了一个模拟:https://jsfiddle.net/j26fpgzo/
使用中继器中某个控件的ID,并在回发完成后使用JQuery滚动。
你可以得到一些控件的ID根据他们正在生成的格式
- 有没有一种方法可以直接从cordova获得滚动位置
- 根据滚动位置动态更改href
- 是否可以使用flexbox显示模型设置元素的滚动位置
- 浏览器持续滚动位置
- Sammy.js缓存和滚动位置时,返回历史
- PHP保持滚动位置
- 按下后退按钮时,如何保持可滚动区域的滚动位置
- 滚动位置 (scrollTop) 硬件是否在浏览器中加速
- 在 React 中创建滚动位置指标
- 关闭移动菜单后恢复滚动位置
- 检测可滚动元素内的滚动位置
- 如何在反应性呈现新帖子时保持滚动位置
- UI 路由器 - 在状态之间转换时记住滚动位置
- 单击下拉列表时保持滚动位置(javascript)
- 保留选项后的滚动位置(单击时)
- js-scrollToEl获取滚动位置
- Backbone.js路由和滚动位置
- 如何更改页眉'的底部边框颜色取决于滚动位置
- 如何精确地获得页面的最大滚动位置
- 导航栏固定底部位置,当到达滚动位置时切换到静态