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