在UpdatePanel中,我有很多Checkbox,我需要将其设置为“AutoPostback
”到“true
”。
问题:
假设我在面板中有100个复选框,我正在勾选#50 checbox,然后控件自动进入页面顶部,我必须再次下来勾选另一个复选框(比如说#60)。
这对用户来说真的很烦人,我被要求停止这种自动滚动,以便他们可以停留在同一个地方并勾选另一个复选框。我怎样才能让我的网页每次都停在最前面?
有没有办法禁用这种行为?我想UpdatePanel可能是问题..如果是这样,我该如何禁用自动引用?
答案 0 :(得分:0)
停止使用UpdatePanel,或将UpdateMode设置为条件。
如果 UpdateMode 属性设置为条件,则在满足以下条件之一时更新UpdatePanel控件的内容:
答案 1 :(得分:0)
没有内置方法可以做到这一点。您将不得不编写一些Javascript函数来完成此任务:
隐藏字段可以说'hfScrollvalue'(保存并重置滚动位置)
编写一个JS方法“GetScrollPosition”,以获取面板的滚动位置并保存在隐藏的字段中
编写JS方法“SetScrollPosition”以从隐藏字段获取滚动位置并将其设置回面板
然后,您可以在请求结束时通过为此目的添加处理程序来调用SetScrollPosition方法
请求结束后,更新面板再次设置滚动位置。因此,您可以在将值设置为面板滚动位置时稍微延迟一下。您可以使用Javascript的setTimeout方法来完成此操作。所以通过这个延迟,你的保存位置将在ajax处理完成后在面板上设置
function GetScrollPosition() {
document.getElementById('<%= hfScrollvalue.ClientID %>').value = document.getElementById('<%= Panel1.ClientID %>').scrollTop;
}
function SetScrollPosition(){
document.getElementById('<%= Panel1.ClientID %>').scrollTop = document.getElementById('<%= hfScrollvalue.ClientID %>').value;
}
}
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequest);
function EndRequest(sender, args) {
setTimeout('SetScrollPosition()', 60);
}
如果你正在使用一个TextBox,它在UpdatePanel中,也与Timer绑定,那么你可以这样:
Sys.Application.add_init(DownloadInit);
function DownloadInit(sender) {
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequest);
}
function SetScrollPosition() {
var textArea = document.getElementById('<%=TextBox1.ClientID%>');
textArea.scrollTop = textArea.scrollHeight;
}
function EndRequest(sender, args) {
SetScrollPosition();
}
答案 2 :(得分:0)
在页面指令
中添加以下内容MaintainScrollPositionOnPostback = “真”