MaintainScrollPositionOnPostBack
PostBackが発生した際、ページのスクロールバーの位置を保持しておくプロパティ
.NetFrmawork2.0からの機能
このプロパティをTrueにしておくと、スクロールバーのあるような大きなページで
PostBackが発生した場合にページの先頭に移動しなくなる
使用例は以下の通り
ScrollPosition.aspx
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="ScrollPosition.aspx.vb" Inherits="ScrollPosition" MaintainScrollPositionOnPostBack="true" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>無題のページ</title> </head> <body> <form id="form1" runat="server"> <div> <asp:GridView ID="GridView1" runat="server" AutoGenerateSelectButton="True"> <SelectedRowStyle BackColor="#80FFFF" /> </asp:GridView> <asp:Button ID="Button1" runat="server" Text="Button" /> </div> </form> </body> </html>
※PageディテクティブでMaintainScrollPositionOnPostBackをTrueに指定
ScrollPosition.aspx.vb
Partial Class ScrollPosition Inherits System.Web.UI.Page Protected Sub form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles form1.Load If IsPostBack = False Then Call GridView_DataSet() End If End Sub 'GridViewにDataSetを連携 Private Sub GridView_DataSet() Dim dt As New Data.DataTable Dim dr As Data.DataRow Dim i As Long '列の定義 dt.Columns.Add(New Data.DataColumn("hogeNo", GetType(Integer))) dt.Columns.Add(New Data.DataColumn("hogeName", GetType(String))) '値を設定 For i = 1 To 50 dr = dt.NewRow() dr(0) = i dr(1) = "harada" & i dt.Rows.Add(dr) Next GridView1.DataSource = dt GridView1.DataBind() End Sub End Class
なお、スクロールが保持されるのはページのスクロールバーだけである
divタグやPanelタグ等で作成したスクロールバーの位置は保持されない
divタグのスクロールバーを操作したい場合、Javascript等でscrollTopの値を設定したりする必要がある
動作確認環境:Visual Stadio 2005