维护Panel的滚动条ScrollBars位置(C#)

我们常将内容放在Panel中,例如文章,GridView控件等....。当内容超出Panel的高、宽时,可能就需要滚动条来进行控制。 当点击页面中按钮产生PostBack时,滚动条总是会回到最上面的位置,我们现在要解决的主要就是这个问题。
  1. private void HandlePanelScrolBar()
  2.     ...{
  3.         //定义两个HiddenField,分别纪录Panel的ScrollBar的X与Y位置
  4.         HiddenField HF_ScrollPosX = new HiddenField();
  5.         HiddenField HF_ScrollPosY = new HiddenField();
  6.         HF_ScrollPosX.ID = "ScrollPosX";
  7.         HF_ScrollPosY.ID = "ScrollPosY";
  8.         form1.Controls.Add(HF_ScrollPosX);
  9.         form1.Controls.Add(HF_ScrollPosY);
  10.         //生成JS:将Panel的ScrollBar的X,Y位置设置给两个HiddenField
  11.         string script;
  12.         script = "window.document.getElementById('" + HF_ScrollPosX.ClientID + "').value = "
  13.                   + "window.document.getElementById('" + P_Container.ClientID + "').scrollLeft;"
  14.                   + "window.document.getElementById('" + HF_ScrollPosY.ClientID + "').value = "
  15.                   + "window.document.getElementById('" + P_Container.ClientID + "').scrollTop;";
  16.         this.ClientScript.RegisterOnSubmitStatement(this.GetType(), "SavePanelScroll", script);
  17.         if (IsPostBack) //如果是PostBack,将保存在HiddenField的ScrollBar的X,Y值重设回给Panel的ScrollBar
  18.         ...{
  19.             script = "window.document.getElementById('" + P_Container.ClientID + "').scrollLeft = "
  20.                     + "window.document.getElementById('" + HF_ScrollPosX.ClientID + "').value;"
  21.                     + "window.document.getElementById('" + P_Container.ClientID + "').scrollTop = "
  22.                     + "window.document.getElementById('" + HF_ScrollPosY.ClientID + "').value;";
  23.             this.ClientScript.RegisterStartupScript(this.GetType(), "SetPanelScroll", script, true);
  24.         }
  25.     }

代码中的P_Container为Panel的名字

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值