擴展 Panel 控制項 - 自動維護捲軸位置

擴展 Panel 控制項 - 自動維護捲軸位置

我們知道 Page 的 MaintainScrollPositionOnPostBack 屬性為 True 時,PostBack 時頁面就會自動維護捲軸位置。而在上一篇「維護 Panel 捲軸位置」文章中,也介紹如何利用 HiddenField 來維護 Panel 捲軸的位置;在這篇文章中,我們將利用相同的原理,擴展 Panel 控制項,使得 Panel 控制項就自動具有此功能。

我們將繼承 Panel 控制項下來命名為 TBPanel ,如同 Page 一樣,在 TBPanel 中新增一個 MaintainScrollPositionOnPostBack 屬性,當MaintainScrollPositionOnPostBack 設定 True 時,TBPanel 就會自動維護 PostBack 時捲軸的位置。

TBPanel 完整的程式碼如下

程式碼中主要是透過 DoMaintainScrollPosition 方法,是用來維護捲軸位置。在此方法中會輸出二個 HiddenField 來記錄水平及垂直捲軸的位置,並在頁面上註冊 Panel_SaveScrollPosition 及 Panel_RestoreScrollPosition 二個 JavaScript 函式,當頁面 Sumbit 時會呼叫 Panel_SaveScrollPositio 函式將 Panel 的捲軸位置記錄於 HiddenField,而 PostBack 後重新載入頁面時會呼叫 Panel_RestoreScrollPosition 來還原捲軸位置。

程式碼下載:TBPanel.rar

ASP.NET 魔法學院