更新 : 2007 年 11 月
各列がフィールドを表し、各行がレコードを表すテーブルに、データ ソースの値を表示します。GridView コントロールにより、これらの項目の選択、並べ替え、編集ができます。
<ControlValuePropertyAttribute("SelectedValue")> _ <AspNetHostingPermissionAttribute(SecurityAction.LinkDemand, Level := AspNetHostingPermissionLevel.Minimal)> _ <AspNetHostingPermissionAttribute(SecurityAction.InheritanceDemand, Level := AspNetHostingPermissionLevel.Minimal)> _ Public Class GridView _ Inherits CompositeDataBoundControl _ Implements IPostBackContainer, IPostBackEventHandler, ICallbackContainer, ICallbackEventHandler
Dim instance As GridView
[ControlValuePropertyAttribute("SelectedValue")] [AspNetHostingPermissionAttribute(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermissionAttribute(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)] public class GridView : CompositeDataBoundControl, IPostBackContainer, IPostBackEventHandler, ICallbackContainer, ICallbackEventHandler
[ControlValuePropertyAttribute(L"SelectedValue")] [AspNetHostingPermissionAttribute(SecurityAction::LinkDemand, Level = AspNetHostingPermissionLevel::Minimal)] [AspNetHostingPermissionAttribute(SecurityAction::InheritanceDemand, Level = AspNetHostingPermissionLevel::Minimal)] public ref class GridView : public CompositeDataBoundControl, IPostBackContainer, IPostBackEventHandler, ICallbackContainer, ICallbackEventHandler
/** @attribute ControlValuePropertyAttribute("SelectedValue") */ /** @attribute AspNetHostingPermissionAttribute(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal) */ /** @attribute AspNetHostingPermissionAttribute(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal) */ public class GridView extends CompositeDataBoundControl implements IPostBackContainer, IPostBackEventHandler, ICallbackContainer, ICallbackEventHandler
public class GridView extends CompositeDataBoundControl implements IPostBackContainer, IPostBackEventHandler, ICallbackContainer, ICallbackEventHandler
<asp:GridView />
GridView コントロールは、データ ソースの値をテーブルに表示するために使用されます。各列はフィールドを表し、各行はレコードを表します。GridView コントロールは、次の機能をサポートしています。
SqlDataSource などのデータ ソース コントロールへのバインド。
組み込みの並べ替え機能。
組み込みの更新機能と削除機能。
組み込みのページング機能。
組み込みの行選択機能。
プロパティを動的に設定したり、イベントを処理したりするための、GridView オブジェクト モデルへのプログラムによるアクセス。
複数のキー フィールド。
ハイパーリンク列の複数のデータ フィールド。
テーマとスタイルを使用した外観のカスタマイズ。
ASP.NET で使用できる他のデータ バインド コントロールについては、「ASP.NET のデータ バインド Web サーバー コントロールの概要」を参照してください。
.NET Framework Version 1.0 の DataGrid コントロールを理解していれば、GridView コントロールを DataGrid コントロールの後継バージョンとして使用できます。
GridView コントロールの各列は、DataControlField オブジェクトによって表されます。既定では AutoGenerateColumns プロパティは true に設定されています。つまり、データ ソース内の各フィールドに対して AutoGeneratedField オブジェクトが作成されます。次に、各フィールドはデータ ソースに表示される順序で GridView コントロールの列として表示されます。
AutoGenerateColumns プロパティを false に設定し、独自の列フィールドのコレクションを定義することによって、GridView コントロールに表示する列フィールドを手動で制御することもできます。さまざまな列フィールドの型があり、それによってコントロール内の列の機能は異なります。使用できるさまざまな列フィールドの型の一覧を次の表に示します。
列フィールド型
説明
BoundField
データ ソースのフィールドの値を表示します。この型は GridView コントロールの既定の列型です。
ButtonField
GridView コントロールの各項目に対してコマンド ボタンを表示します。この機能により、[Add] ボタンや [Remove] ボタンなどのカスタム ボタン コントロールの列を作成できます。
CheckBoxField
GridView コントロールの各項目に対してチェック ボックスを表示します。この列フィールド型は、通常、ブール値を持つフィールドの表示に使用されます。
CommandField
選択、編集、または削除の各操作を実行する定義済みのコマンド ボタンを表示します。
HyperLinkField
データ ソース内のフィールドの値をハイパーリンクとして表示します。この列フィールド型を使用すると、2 番目のフィールドをハイパーリンクの URL にバインドできます。
ImageField
GridView コントロールの各項目に対してイメージを表示します。
TemplateField
指定したテンプレートに基づいて、GridView コントロールの各項目に対してユーザー定義のコンテンツを表示します。この列フィールド型を使用すると、カスタム列フィールドを作成できます。
宣言によって列フィールドのコレクションを定義するには、最初に、GridView コントロールの開始タグと終了タグの間に開始と終了の <Columns> タグを追加します。次に、開始と終了の <Columns> タグの間に挿入する列フィールドを指定します。指定した列が、一覧表の順序で Columns コレクションに追加されます。Columns コレクションにコントロール内のすべての列フィールドが格納され、このコレクションを使用して、GridView コントロール内の列フィールドをプログラムによって制御できます。
明示的に宣言された列フィールドを、自動生成された列フィールドと組み合わせて表示できます。これらの両方を使用した場合、明示的に宣言された列フィールドが先に表示され、自動生成された列フィールドが次に表示されます。
自動生成された列フィールドは、Columns コレクションに追加されません。
GridView コントロールは、データ ソース コントロール (SqlDataSource、ObjectDataSource など)、および System.Collections..::.IEnumerable インターフェイスを実装しているデータ ソース (System.Data..::.DataView、System.Collections..::.ArrayList、System.Collections..::.Hashtable など) にバインドできます。GridView コントロールを適切なデータ ソースの種類にバインドするには、次のいずれかの方法を使用します。
データ ソース コントロールにバインドするには、GridView コントロールの DataSourceID プロパティをデータ ソース コントロールの ID 値に設定します。GridView コントロールは、指定したデータ ソース コントロールに自動的にバインドされ、データ ソース コントロールの機能を利用して、並べ替え、更新、削除、およびページングを実行できます。データにバインドするには、この方法をお勧めします。
System.Collections..::.IEnumerable インターフェイスを実装するデータ ソースにバインドするには、プログラムによって GridView コントロールの DataSource プロパティをデータ ソースに設定してから、DataBind メソッドを呼び出します。このメソッドを使用すると、GridView コントロールは、組み込みの並べ替え、更新、削除、およびページングの各機能を提供しません。適切なイベントを使用して、この機能を提供する必要があります。
データ バインディングの詳細については、「ASP.NET でのデータ アクセス」を参照してください。
このコントロールは、ユーザー入力を表示するために使用できます。ユーザー入力には悪意のあるクライアント スクリプトが含まれている可能性があります。アプリケーションに表示する前に、クライアントから送信された実行スクリプト、SQL ステートメントなどのコードの情報はすべて検査してください。できる限り、値は、このコントロールに表示する前に HTML エンコードするようにしてください (BoundField クラスでは、既定で値が HTML エンコードされます)。ASP.NET には入力要求の検証機能があり、ユーザー入力の中のスクリプトと HTML をブロックできます。検証サーバー コントロールは、ユーザー入力を査定する目的でも用意されています。詳細については、「検証コントロールの概要」を参照してください。
GridView コントロールには、ユーザーがそのコントロール内の項目を使用して並べ替え、更新、削除、選択、ページングを実行できるようにする多数の組み込み機能が用意されています。GridView コントロールがデータ ソース コントロールにバインドされている場合、GridView コントロールは、データ ソース コントロールの機能を利用して、自動的な並べ替え、更新、および削除の各機能を提供します。
他の種類のデータ ソースでも、GridView コントロールは並べ替え、更新、および削除をサポートできます。ただし、これらの操作の実装で、適切なイベント ハンドラを用意する必要があります。
並べ替えを使用すると、列のヘッダーをクリックすることによって、ユーザーが特定の列を基準にして GridView コントロールの項目を並べ替えることができます。並べ替えを有効にするには、AllowSorting プロパティを true に設定します。
自動的な更新、削除、および選択の各機能は、ButtonField 列フィールドまたは TemplateField 列フィールドの (それぞれの CommandName が "Edit"、"Delete"、"Select" に設定されている) ボタンがクリックされたときに有効になります。GridView コントロールでは、AutoGenerateEditButton、AutoGenerateDeleteButton、または AutoGenerateSelectButton の各プロパティが true に設定されている場合、それぞれ Edit、Delete、または Select の各ボタンを持つ CommandField 列フィールドを自動的に追加できます。
GridView コントロールでは、データ ソースへのレコードの挿入は直接サポートされません。ただし、GridView コントロールを DetailsView コントロールまたは FormView コントロールと組み合わせて使用することによって、レコードを挿入できます。詳細については、それぞれ DetailsView または FormView のトピックを参照してください。
GridView コントロールでは、データ ソース内のすべてのレコードを同時に表示せずに、自動的にレコードを複数のページに分割できます。ページングを有効にするには、AllowPaging プロパティを true に設定します。
GridView コントロールは、ポストバック時に、ViewState に格納された情報に基づいて再作成されます。GridView コントロールに、CausesValidation プロパティが true に設定されている TemplateField または CommandField が含まれている場合は、更新や削除などの同時実行データ操作が適切な行に適用されるように、EnableViewState プロパティも true に設定する必要があります。
コントロールのさまざまな部分にスタイル プロパティを設定することによって、GridView コントロールの外観をカスタマイズできます。さまざまなスタイル プロパティの一覧を次の表に示します。
スタイル プロパティ
AlternatingRowStyle
GridView コントロールの交互のデータ行のスタイル設定。このプロパティが設定されている場合、データ行は、RowStyle 設定と AlternatingRowStyle 設定が交互に適用されて表示されます。
EditRowStyle
GridView コントロールの編集中の行のスタイル設定。
EmptyDataRowStyle
データ ソースにレコードが格納されていない場合に GridView コントロールに表示される、空のデータ行のスタイル設定。
FooterStyle
GridView コントロールのフッター行のスタイル設定。
HeaderStyle
GridView コントロールのヘッダー行のスタイル設定。
PagerStyle
GridView コントロールのページ行のスタイル設定。
RowStyle
GridView コントロールのデータ行のスタイル設定。AlternatingRowStyle プロパティも設定されている場合、データ行は、RowStyle 設定と AlternatingRowStyle 設定が交互に適用されて表示されます。
SelectedRowStyle
GridView コントロールの選択されているデータ行のスタイル設定。
コントロールのさまざまな部分を表示または非表示にすることもできます。表示または非表示にする部分を制御するプロパティの一覧を次の表に示します。
プロパティ
ShowFooter
GridView コントロールのフッター セクションを表示または非表示にします。
ShowHeader
GridView コントロールのヘッダー セクションを表示または非表示にします。
GridView コントロールには、プログラムに利用できる複数のイベントが用意されています。これにより、イベントが発生するたびにカスタム ルーチンが実行されるようにできます。GridView コントロールでサポートされるイベントの一覧を次の表に示します。
イベント
PageIndexChanged
ページャ ボタンの 1 つがクリックされた場合に、GridView コントロールがページング操作を処理した後に発生します。通常、このイベントは、ユーザーがコントロール内の別のページに移動した後にタスクを実行する必要がある場合に使用されます。
PageIndexChanging
ページャ ボタンの 1 つがクリックされた場合に、GridView コントロールがページング操作を処理する前に発生します。このイベントは、ページング操作をキャンセルする場合によく使用されます。
RowCancelingEdit
行の Cancel ボタンがクリックされた場合に、GridView コントロールが編集モードを終了する前に発生します。このイベントは、キャンセル操作を停止する場合によく使用されます。
RowCommand
GridView コントロールのボタンがクリックされたときに発生します。このイベントは、コントロールのボタンがクリックされたときにタスクを実行する場合によく使用されます。
RowCreated
GridView コントロールに新しい行が作成されたときに発生します。このイベントは、行が作成されたときに行の内容を変更する場合によく使用されます。
RowDataBound
GridView コントロールでデータ行がデータにバインドされたときに発生します。このイベントは、行がデータにバインドされたときに行の内容を変更する場合によく使用されます。
RowDeleted
行の Delete ボタンがクリックされた場合に、GridView コントロールがデータ ソースからレコードを削除した後に発生します。このイベントは、削除操作の結果を確認する場合によく使用されます。
RowDeleting
行の Delete ボタンがクリックされた場合に、GridView コントロールがデータ ソースからレコードを削除する前に発生します。このイベントは、削除操作をキャンセルする場合によく使用されます。
RowEditing
行の Edit ボタンがクリックされた場合に、GridView コントロールが編集モードになる前に発生します。このイベントは、編集操作をキャンセルする場合によく使用されます。
RowUpdated
行の Update ボタンがクリックされた場合に、GridView コントロールが行を更新した後に発生します。このイベントは、更新操作の結果を確認する場合によく使用されます。
RowUpdating
行の Update ボタンがクリックされた場合に、GridView コントロールが行を更新する前に発生します。このイベントは、更新操作をキャンセルする場合によく使用されます。
SelectedIndexChanged
行の Select ボタンがクリックされた場合に、GridView コントロールが選択操作を処理した後に発生します。このイベントは、コントロールの行が選択された後にタスクを実行する場合によく使用されます。
SelectedIndexChanging
行の Select ボタンがクリックされた場合に、GridView コントロールが選択操作を処理する前に発生します。このイベントは、選択操作をキャンセルする場合によく使用されます。
Sorted
列を並べ替えるハイパーリンクがクリックされた場合に、GridView コントロールが並べ替え操作を処理した後に発生します。このイベントは、列を並べ替えるハイパーリンクがクリックされた後にタスクを実行する場合によく使用されます。
Sorting
列を並べ替えるハイパーリンクがクリックされた場合に、GridView コントロールが並べ替え操作を処理する前に発生します。このイベントは、並べ替え操作をキャンセルする場合や、カスタムの並べ替えルーチンを実行する場合などによく使用されます。
このコントロールに既定でレンダリングされるマークアップは、Web Content Accessibility Guidelines (WCAG) 1.0 の優先度 1 ガイドラインなどのユーザー補助に関する標準に適合しない可能性があります。このコントロールのユーザー補助サポートの詳細については、「ASP.NET コントロールとユーザー補助」を参照してください。
GridView コントロールを使用して、Microsoft SQL Server の Pubs サンプル データベースの Authors テーブルから値を表示する方法を次の例に示します。値は、SqlDataSource コントロールを使用して取得されます。
<%@ Page language="VB" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html > <head runat="server"> <title>GridView Example</title> </head> <body> <form id="form1" runat="server"> <h3>GridView Example</h3> <asp:gridview id="CustomersGridView" datasourceid="CustomersSource" autogeneratecolumns="true" emptydatatext="No data available." allowpaging="true" runat="server"> </asp:gridview> <!-- This example uses Microsoft SQL Server and connects --> <!-- to the Northwind sample database. Use an ASP.NET --> <!-- expression to retrieve the connection string value --> <!-- from the Web.config file. --> <asp:sqldatasource id="CustomersSource" selectcommand="Select [CustomerID], [CompanyName], [Address], [City], [PostalCode], [Country] From [Customers]" connectionstring="<%$ ConnectionStrings:NorthWindConnectionString%>" 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 > <head runat="server"> <title>GridView Example</title> </head> <body> <form id="form1" runat="server"> <h3>GridView Example</h3> <asp:gridview id="CustomersGridView" datasourceid="CustomersSource" autogeneratecolumns="true" emptydatatext="No data available." allowpaging="true" runat="server"> </asp:gridview> <!-- This example uses Microsoft SQL Server and connects --> <!-- to the Northwind sample database. Use an ASP.NET --> <!-- expression to retrieve the connection string value --> <!-- from the Web.config file. --> <asp:sqldatasource id="CustomersSource" selectcommand="Select [CustomerID], [CompanyName], [Address], [City], [PostalCode], [Country] From [Customers]" connectionstring="<%$ ConnectionStrings:NorthWindConnectionString%>" runat="server"/> </form> </body> </html>
GridView コントロールを使用してレコードを編集する方法を次の例に示します。
<%@ Page language="VB" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html > <head runat="server"> <title>GridView Edit Example</title> </head> <body> <form id="form1" runat="server"> <h3>GridView Edit Example</h3> <!-- The GridView control automatically sets the columns --> <!-- specified in the datakeynames property as read-only. --> <!-- No input controls are rendered for these columns in --> <!-- edit mode. --> <asp:gridview id="CustomersGridView" datasourceid="CustomersSqlDataSource" autogeneratecolumns="true" autogeneratedeletebutton="true" autogenerateeditbutton="true" datakeynames="CustomerID" runat="server"> </asp:gridview> <!-- This example uses Microsoft SQL Server and connects --> <!-- to the Northwind sample database. Use an ASP.NET --> <!-- expression to retrieve the connection string value --> <!-- from the Web.config file. --> <asp:sqldatasource id="CustomersSqlDataSource" selectcommand="Select [CustomerID], [CompanyName], [Address], [City], [PostalCode], [Country] From [Customers]" updatecommand="Update Customers SET CompanyName=@CompanyName, Address=@Address, City=@City, PostalCode=@PostalCode, Country=@Country WHERE (CustomerID = @CustomerID)" deletecommand="Delete from Customers where CustomerID = @CustomerID" connectionstring="<%$ ConnectionStrings:NorthWindConnectionString%>" runat="server"> </asp:sqldatasource> </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 > <head runat="server"> <title>GridView Edit Example</title> </head> <body> <form id="form1" runat="server"> <h3>GridView Edit Example</h3> <!-- The GridView control automatically sets the columns --> <!-- specified in the datakeynames property as read-only. --> <!-- No input controls are rendered for these columns in --> <!-- edit mode. --> <asp:gridview id="CustomersGridView" datasourceid="CustomersSqlDataSource" autogeneratecolumns="true" autogeneratedeletebutton="true" autogenerateeditbutton="true" datakeynames="CustomerID" runat="server"> </asp:gridview> <!-- This example uses Microsoft SQL Server and connects --> <!-- to the Northwind sample database. Use an ASP.NET --> <!-- expression to retrieve the connection string value --> <!-- from the Web.config file. --> <asp:sqldatasource id="CustomersSqlDataSource" selectcommand="Select [CustomerID], [CompanyName], [Address], [City], [PostalCode], [Country] From [Customers]" updatecommand="Update Customers SET CompanyName=@CompanyName, Address=@Address, City=@City, PostalCode=@PostalCode, Country=@Country WHERE (CustomerID = @CustomerID)" deletecommand="Delete from Customers where CustomerID = @CustomerID" connectionstring="<%$ ConnectionStrings:NorthWindConnectionString%>" runat="server"> </asp:sqldatasource> </form> </body> </html>
セルの値へのアクセス方法を示す例については、GridViewRow のトピックを参照してください。
ホスト環境での動作に必要なアクセス許可。要求値 : LinkDemand。アクセス許可値 : Minimal
ホスト環境での動作に必要なアクセス許可。要求値 : InheritanceDemand。アクセス許可値 : Minimal
Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98