维护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的名字

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章