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