gpt4 book ai didi

javascript - 如何在嵌套主控中的 asp.net 异步回发后维护滚动位置?

转载 作者:行者123 更新时间:2023-11-28 01:20:22 24 4
gpt4 key购买 nike

我有一个带有嵌套母版的子页面,这意味着 2 个母版页相互继承,并且在该子页面中我仅拥有所有用户控件。

因此,就我而言,我必须在用户控件列表框异步回发后保持子页面的滚动位置。

我已经尝试过:

MaintainScrollPositionOnPostback="true" 

带有in page指令和js代码

<script type="text/javascript" >
var xPos, yPos;
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_beginRequest(BeginRequestHandler);
prm.add_endRequest(EndRequestHandler);
function BeginRequestHandler(sender, args) {
xPos = document.getElementById("<%=Panel1.ClientID %>").scrollLeft;
yPos = document.getElementById("<%=Panel1.ClientID %>").scrollTop;
}
function EndRequestHandler(sender, args) {
document.getElementById("<%=Panel1.ClientID %>").scrollLeft = xPos;
document.getElementById("<%=Panel1.ClientID %>").scrollTop = yPos;
}
</script>

对于面板、div 和更新面板..这些都完全失败,为什么因为如果子页面回发意味着相关母版页也回发..但我不知道如何维护滚动位置..

请尽快帮助我..

谢谢大家

最佳答案

假设我有一个

<asp:hiddenfield id="hid" runat="server"/>     
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_beginRequest(BeginRequestHandler);
prm.add_endRequest(EndRequestHandler);
function BeginRequestHandler(sender, args) {
xPos = document.getElementById("<%=Panel1.ClientID %>").scrollLeft;
yPos = document.getElementById("<%=Panel1.ClientID %>").scrollTop;
var h = document.getElementById("<%=hid.ClientID %>");
h.value = xPos.toString() + "_" + yPos.toString();
}
function EndRequestHandler(sender, args) {
var val = document.getElementById("<%=hid.ClientID %>").value.split('_');
xPos = parseFloat(val[0]);
yPos = parseFloat(val[1]);
document.getElementById("<%=Panel1.ClientID %>").scrollLeft = xPos;
document.getElementById("<%=Panel1.ClientID %>").scrollTop = yPos;
}
</ asp:hiddenfield>

谢谢

关于javascript - 如何在嵌套主控中的 asp.net 异步回发后维护滚动位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23341316/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com