【问题标题】:Using MaintainScrollPositionOnPostBack with CollapsiblePanelExtender将 MaintainScrollPositionOnPostBack 与 CollapsiblePanelExtender 一起使用
【发布时间】:2011-08-06 13:28:44
【问题描述】:

在使用 CollapsiblePanelExtenders 的页面上将 MaintainScrollPositionOnPostBack 的 Page 指令设置为 true 时,一旦进行回发,页面就无法正确保持滚动位置。

我注意到,一旦进行回发,浏览器会尝试滚动到原始位置之前可折叠面板再次展开(因为它们以折叠状态加载,然后展开在客户端),因此滚动位置要么根本不移动,要么只是部分移动。

我能想到的一个潜在解决方案是将受影响的面板包装在 UpdatePanel 中,以避免完全回发,但这并不是特别理想,因为此问题会影响多个屏幕。

【问题讨论】:

    标签: c# asp.net asp.net-ajax ajaxcontroltoolkit


    【解决方案1】:

    您可以将 CollapsiblePanelExtender 的状态捕获到一个 HiddenField 中,然后在回发期间处理 CollapsiblePanelExtender 服务器端的状态。

    有一些例子here

    【讨论】:

    • 感谢您的建议,但实际上面板保持折叠/展开状态非常好。只是在回发之后,滚动位置正在调整之前面板再次展开(因为它们在自动展开之前呈现为折叠状态)。这一切都发生在一瞬间,所以我想它只取决于事件的顺序。如果有办法在渲染之前预先设置面板的状态,它可能会解决问题。
    • 这就是我所说的你应该做的:捕获面板服务器端的状态并设置它如何呈现服务器端,以便当它被发送到浏览器展开时,MaintainScrollPosition 工作。
    • 啊,对不起。是的,这是有道理的。我会试一试,然后在这里回复结果。谢谢。
    • 我意识到触发页面回发的方法太多了,所以为了测试我在面板中添加了一个 OnPreRender 事件,甚至将扩展器的默认折叠状态更改为“false” ”。即使面板展开,也不会保持滚动位置。对我来说,这意味着我应该只选择 UpdatePanel 来解决问题,除非您认为我不够彻底。
    猜你喜欢
    • 1970-01-01
    • 2016-11-01
    • 1970-01-01
    • 2011-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多