首先是為DIV添加一個(gè)onscroll="javascript:setScollTop()" 的方法(當(dāng)然不一定是DIV其他的標(biāo)簽思路應(yīng)該也是這樣的)
<div class="codetitle" style="margin: 3px auto 0px; padding: 0px 3px; outline: none; line-height: 25.2px; font-size: 14px; background: rgb(242, 246, 251); width: 640px; clear: both; border-top: 1px solid rgb(0, 153, 204); border-right: 1px solid rgb(0, 153, 204); border-left: 1px solid rgb(0, 153, 204); border-image: initial; border-bottom: none; font-family: tahoma, arial, "Microsoft YaHei";"> 復(fù)制代碼代碼如下:解決ASP.NET回傳后div滾動(dòng)條位置復(fù)位的問題(利用隱藏控件原理)
2019-11-25 13:12ASP.NET教程網(wǎng) ASP.NET教程
這篇文章主要介紹了解決ASP.NET回傳后div滾動(dòng)條位置復(fù)位的問題,中心思想是用一個(gè)隱藏控件保存當(dāng)前scorll值。回傳回來后根據(jù)scrollTop的值,然后在Page_Load中重新設(shè)置scrollTop
<div style="overflow: auto; height: 152px" align="left" id="dvScoll_1" onscroll="javascript:setScollTop()">
www.jfrwli.cn
......
</div>
這里setScrollTop方法就是每次滾動(dòng)條滾動(dòng)的時(shí)候,把div的ScrollTop的值賦給一個(gè)隱藏控件。代碼如下
function setScollTop()
{
document.getElementById("<%=hidScrollTop.ClientID%>").value=document.getElementById("dvScoll_1").scrollTop;
}
因?yàn)槊看?net回發(fā)滾動(dòng)條都會(huì)復(fù)位,所以這里我們 在Page_Load中給DIV的ScrollTop重新賦值了。代碼如下
if (!IsPostBack)
{
。。。。。
}
else
{
//恢復(fù)滾動(dòng)條位置
if (this.hidScrollTop.Value!="")
{
string scrollTop = this.hidScrollTop.Value;
string strScript="document.getElementById('dvScoll_1').scrollTop="+scrollTop;
RegisterScriptBlock(this.Page, strScript);
}
}
這里的RegisterScriptBlock是我寫的一個(gè)方法,放在公共類庫里的,如下所示。
/// <summary>
/// 注冊(cè)腳本塊
/// </summary>
public static void RegisterScriptBlock(System.Web.UI.Page page, string _ScriptString)
{
page.ClientScript.RegisterStartupScript(page.GetType(), "scriptblock", "<script type='text/javascript'>" + _ScriptString + "</script>");
}