解决页面刷新后滚动条回滚的问题。

1.在页面中新增一个方法
 private void KeepScrollPosition(Control p)
        {
            HiddenField oScrollPosX = new HiddenField();
            HiddenField oScrollPosY = new HiddenField();
            oScrollPosX.ID = p.ClientID + "X";
            oScrollPosY.ID = p.ClientID + "Y";
            this.Form.Controls.Add(oScrollPosX);
            this.Form.Controls.Add(oScrollPosY);


            string sScript = "window.document.getElementById('" + oScrollPosX.ClientID + "').value =" +
                 "window.document.getElementById('" + p.ClientID + "').scrollLeft;";
            sScript = sScript + "window.document.getElementById('" + oScrollPosY.ClientID + "').value = " +
                 "window.document.getElementById('" + p.ClientID + "').scrollTop;";
            this.ClientScript.RegisterOnSubmitStatement(this.GetType(), "", sScript);


            if (IsPostBack)
            {
                oScrollPosX.Value = this.Request.Form[oScrollPosX.ClientID];
                oScrollPosY.Value = this.Request.Form[oScrollPosY.ClientID];

                sScript = "window.document.getElementById('" + p.ClientID + "').scrollLeft = " + oScrollPosX.Value + ";" +
                          "window.document.getElementById('" + p.ClientID + "').scrollTop = " + oScrollPosY.Value + ";";

                this.ClientScript.RegisterStartupScript(this.GetType(), "", sScript, true);
            }
        }

 

2.在页面中设置需要设置滚动条的控件放在一个div或Panel中。
示例如下:
<div runat="server" id="sp" style="width: 100%; height: 450px; overflow:auto">
 //这里是DataGrid...
</div>

 

3.在页面中调用基类中的KeepScrollPosition方法
 protected override void Page_Load(object sender, EventArgs e)
{
            base.Page_Load(sender, e);
    //调用
            KeepScrollPosition(this.sp);
    //其他代码...

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值