維護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的名字

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