維護 Panel 捲軸位置

維護 Panel 捲軸位置

GridView 若需要有捲軸,通常會將 GridView 置於 Panel 中,並設定 Panel 的 ScrollBars 屬性為 "Auto" 時,這樣就可以在 Panel 就會自動判斷是否需要出現水平或垂直捲軸。

可是當頁面 PostBack 時,Panel 的垂直捲軸會跳回最上方,水平捲軸會跳回最左方。我們可以參考 Page.MaintainScrollPositionOnPostBack 屬性的做法(參考 解析 Page.MaintainScrollPositionOnPostBack 屬性 這篇文章),利用二個 HiddenField 來記錄水平及垂直捲軸的位置。

我們可以在 Page Load 中撰寫如下的程式碼,其中 Panel 的 ID 命名為 Panel1,在面頁輸出 "ScrollPosX" 及 "ScrollPosY" 二個 HiddenField,當頁面 Sumbit 時,利用 "ScrollPosX" HiddenField 來記錄捲軸水平位置,"ScrollPosY" HiddenField 來記錄垂直位置。
而當頁面 PostBack 後重新載入頁面,就取得這二個 HiddenField 值,重新設定 Panel 的捲軸位置,如此就可以維護 Panel 捲軸位置。

ASP.NET 魔法學院