服务器之家

服务器之家 > 正文

Asp.net保持页面滚动条位置(页面提交后不变)

时间:2019-10-31 14:09     来源/作者:asp.net教程网

一般来说很多的人在控制浏览器滚动条都是用Page.SmartNavigation = False,对于页面中DIV等等的滚动条控制,我在看了别人代码后,写了一个,仅供参考: 

复制代码代码如下:


Public Shared Sub SaveDivScrollPosition(ByVal divIDArray As String, ByVal objPage As Page) 
Dim saveScrollPosition As String 
Dim i As Integer 
Dim divID() As String 
divID = divIDArray.Split(",") 
For i = 0 To divID.Length - 1 
objPage.RegisterHiddenField(divID(i) & "__SCROLLPOS", objPage.Request.Form(divID(i) & "__SCROLLPOS")) 
saveScrollPosition = "<script language='javascript'>" _ 
& "function saveScrollPosition() {" _ 
& " if (document.all['" & divID(i) & "'] != undefined) {" _ 
& "document.forms[0]." & divID(i) & "__SCROLLPOS.value = " _ 
& "document.all['" & divID(i) & "'].scrollTop + ',' " _ 
& " + document.all['" & divID(i) & "'].scrollLeft;}}" _ 
& "if (document.all['" & divID(i) & "'] != undefined) {document.all['" & divID(i) & "'].onscroll=saveScrollPosition;}" _ 
& "</script>" 
objPage.RegisterStartupScript("saveScroll" & divID(i), saveScrollPosition) 
Next 
End Sub 

 

复制代码代码如下:


Public Shared Sub RestoreDivScrollPosition(ByVal divIDArray As String, ByVal objPage As Page) 
Dim restoreScrollPosition As String 
Dim setPositionFunction As String 
Dim i As Integer 
Dim divID() As String 
divID = divIDArray.Split(",") 
For i = 0 To divID.Length - 1 
setPositionFunction = setPositionFunction & "SetScrollPosition('" & divID(i) & "');" 
Next 
restoreScrollPosition = "<script language='javascript'>" _ 
& setPositionFunction _ 
& "</script>" 
objPage.RegisterStartupScript("restoreScroll", restoreScrollPosition) 
End Sub 


JAVASCRIPT: 

复制代码代码如下:


function SetScrollPosition(divID){ 
var e; 
var a; 
var obj; 
if (document.getElementById(divID)){ 
obj = eval('document.forms[0].' + divID + '__SCROLLPOS'); 
if (obj) { 
e=eval('document.forms[0].' + divID + '__SCROLLPOS').value; 
a=e.split(','); 
document.getElementById(divID).scrollTop= a[0]; 
document.getElementById(divID).scrollLeft= a[1]; 



在页面后台调用的时候,写下如下的代码: 

复制代码代码如下:


Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
call SaveDivScrollPosition("div1,div2,div3",me) 
call RestoreDivScrollPosition("div1,div2,div3",me) 
End Sub 


不好意思,这两个SUB可以写成一个,仅供参考。 

标签:

相关文章

热门资讯

玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分 2019-06-21
男生常说24816是什么意思?女生说13579是什么意思?
男生常说24816是什么意思?女生说13579是什么意思? 2019-09-17
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情 2019-06-22
超A是什么意思 你好a表达的是什么
超A是什么意思 你好a表达的是什么 2019-06-06
抖音撒撒累累是什么歌 撒撒累累张艺兴歌曲名字
抖音撒撒累累是什么歌 撒撒累累张艺兴歌曲名字 2019-06-05
返回顶部