更新 : 2007 年 11 月
ASP.NET DetailsView コントロールには、レコードを 1 つずつページングするためのサポートが組み込まれています。このコントロールは、ページング ユーザー インターフェイス (UI) のカスタマイズもサポートします。DetailsView コントロールでは、データのページは単一のバインド行です。
DetailsView コントロールでのページングの動作
DetailsView コントロールは、そのデータ ソース内のレコードのページングをサポートします。ページング動作を有効にするには、AllowPaging プロパティに true を設定します。DetailsView コントロールが要求するページ サイズは、常に 1 行です。
DetailsView コントロールがデータ ソース コントロール、または ICollection インターフェイス (データセットを含む) を実装する任意のデータ構造体にバインドされている場合は、データ ソースからすべてのレコードを取得し、現在のページのレコードを表示して、残りのレコードを破棄します。ユーザーが他のページに移動すると、DetailsView コントロールはこのプロセスを繰り返し、別のレコードを表示します。
![]() |
---|
データ ソースが ICollection インターフェイスを実装していない場合、DetailsView コントロールはページングできません。たとえば、SqlDataSource コントロールを使用しているときにその DataSourceMode プロパティに DataReader を設定した場合、DetailsView コントロールはページングを実装できません。 |
ObjectDataSource コントロールなど、一部のデータ ソースでは、より高度なページング機能が提供されます。そのような場合、DetailsView コントロールにより、データ ソースのより高度な機能が利用され、ページング時のパフォーマンスと柔軟性が向上します。要求される行数は、データ ソースが合計行数の取得をサポートしているかどうかによって変わります。
![]() |
---|
データ ソースを作成している場合 (ObjectDataSource コントロールのソース オブジェクトに SelectCountMethod に指定したメソッドを実装する場合など)、データ ソースがデータのページを提供するときに、合計行数を返すことを強くお勧めします。こうすることで、データの任意のページを取得するために DetailsView コントロールが要求するレコード数を最小限にとどめることができます。合計行数がソース データ オブジェクトから提供される場合、DetailsView コントロールは 1 ページにつき 1 行のみを要求します。合計行数が提供されない場合、DetailsView コントロールは、(要求されたデータのページを表す行から開始して) データ ソースのすべての行を要求し、表示する行以外のすべての行を破棄します。 |
ページング設定とユーザー インターフェイスのカスタマイズ
DetailsView ページングのユーザー インターフェイス (UI) は、さまざまな方法でカスタマイズできます。
ページング モード
PagerSettings プロパティでは、AllowPaging プロパティに true を設定したときに DetailsView コントロールによって生成されるページング ユーザー インターフェイス (UI) の外観をカスタマイズできます。DetailsView コントロールは、前方移動と後方移動を可能にする方向コントロールと、特定のページへの移動を可能にする数値コントロールを表示できます。
DetailsView コントロールの PagerSettings プロパティは、PagerSettings クラスに設定されます。ページング モードをカスタマイズするには、DetailsView コントロールの Mode プロパティに PagerButtons 値を設定します。たとえば、ページング UI モードをカスタマイズする場合は、次のように設定できます。
DetailsView1.PagerSettings.Mode = PagerButtons.NextPreviousFirstLast
次のモードを使用できます。
ページャ コントロールの外観
DetailsView コントロールには、各ページャ モードに合わせてテキストとイメージをカスタマイズできるさまざまなプロパティがあります。たとえば、DetailsView コントロールのページング モードを NextPrevious に設定したときに表示されるテキストをカスタマイズする場合は、NextPageText プロパティと PreviousPageText プロパティに独自の値を設定できます。既定では、PreviousPageText プロパティと NextPageText プロパティはそれぞれ "<" と ">" に設定されます。
ページング コントロールの外観をカスタマイズするには、イメージを使用することもできます。PagerSettings クラスには、最初のページ、最後のページ、前のページ、次のページの各コマンド ボタンのイメージ URL プロパティが含まれています。
最後に、ページング コマンドの外観を制御するには、DetailsView コントロールの PagerStyle プロパティに TableItemStyle 値を設定します。
データ ページング テンプレート
DetailsView コントロールの AllowPaging プロパティに true を設定すると、DetailsView コントロールは、ページングのユーザー インターフェイス (UI) コントロールを自動的に追加します。ページング UI をカスタマイズするには、PagerTemplate テンプレートを追加します。実行するページング操作を指定するには、Button コントロールをテンプレートに追加してから、その CommandName プロパティに Page を設定し、さらに CommandArgument プロパティに次のいずれかの値を設定します。
First 最初のページに移動します。
Last 最後のページに移動します。
Prev 前のページに移動します。
Next データの次のページに移動します。
数値 特定のページを指定します。
次のコード例は、ページング機能を提供するように構成された DetailsView コントロールを示しています。
<%@ Page language="VB" %>
<!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>DetailsView Example</title>
</head>
<body>
<form id="form1" runat="server">
<h3>DetailsView Example</h3>
<table cellspacing="10">
<tr>
<td valign="top">
<asp:DetailsView ID="EmployeesDetailsView"
DataSourceID="EmployeesSqlDataSource"
AutoGenerateRows="false"
AllowPaging="true"
DataKeyNames="EmployeeID"
runat="server">
<HeaderStyle forecolor="white" backcolor="Blue" />
<Fields>
<asp:BoundField Datafield="EmployeeID" HeaderText="Employee ID" ReadOnly="true"/>
<asp:BoundField Datafield="FirstName" HeaderText="First Name"/>
<asp:BoundField Datafield="LastName" HeaderText="Last Name"/>
</Fields>
<PagerSettings Mode="NextPreviousFirstLast"
FirstPageText="<<"
LastPageText=">>"
PageButtonCount="1"
Position="Top"/>
</asp:DetailsView>
</td>
</tr>
</table>
<asp:SqlDataSource ID="EmployeesSqlDataSource"
SelectCommand="SELECT * FROM [Employees]"
connectionstring="<%$ ConnectionStrings:NorthwindConnection %>"
RunAt="server"/>
</form>
</body>
</html>
<%@ Page language="C#" %>
<!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>DetailsView Example</title>
</head>
<body>
<form id="form1" runat="server">
<h3>DetailsView Example</h3>
<table cellspacing="10">
<tr>
<td valign="top">
<asp:DetailsView ID="EmployeesDetailsView"
DataSourceID="EmployeesSqlDataSource"
AutoGenerateRows="false"
AllowPaging="true"
DataKeyNames="EmployeeID"
runat="server">
<HeaderStyle forecolor="white" backcolor="Blue" />
<Fields>
<asp:BoundField Datafield="EmployeeID" HeaderText="Employee ID" ReadOnly="true"/>
<asp:BoundField Datafield="FirstName" HeaderText="First Name"/>
<asp:BoundField Datafield="LastName" HeaderText="Last Name"/>
</Fields>
<PagerSettings Mode="NextPreviousFirstLast"
FirstPageText="<<"
LastPageText=">>"
PageButtonCount="1"
Position="Top"/>
</asp:DetailsView>
</td>
</tr>
</table>
<asp:SqlDataSource ID="EmployeesSqlDataSource"
SelectCommand="SELECT * FROM [Employees]"
connectionstring="<%$ ConnectionStrings:NorthwindConnection %>"
RunAt="server"/>
</form>
</body>
</html>