DataKeyCollection クラス
アセンブリ: System.Web (system.web.dll 内)


DataKeyCollection クラスは、データ ソースのキー フィールドのコレクションを表します。データ ソースの各レコードのキー フィールドはこのコレクションに格納されます。これにより、データ リスト コントロールを持つキー フィールドをコントロールに表示せずに格納できます。このコレクションには、BaseDataList.DataKeyField プロパティで指定されたフィールドの値が自動的に格納されます。手動でこのコレクションに項目を追加したり、コレクションから項目を削除したりすることはできません。
通常、キー フィールドは、データ ソース内の特定のレコードを改訂する更新クエリ文字列の一部として、ItemCommand、DeleteCommand などのイベントのハンドラ内で使用されます。キー フィールドは、更新クエリ文字列が変更対象の適切なレコードを識別できるようにします。
コレクション内の項目の数を確認するには、Count プロパティを使用します。DataKeyCollection からキー フィールドをプログラムによって取得するには、次のメソッドのいずれかを使用します。

<%@ Page Language="VB" AutoEventWireup="True" %> <%@ Import Namespace="System.Data" %> <html> <head> <script runat="server"> Function CreateDataSource() As ICollection ' Create sample data for the DataGrid control. Dim dt As DataTable = New DataTable() Dim dr As DataRow ' Define the columns of the table. dt.Columns.Add(new DataColumn("IntegerValue", GetType(Integer))) dt.Columns.Add(new DataColumn("StringValue", GetType(String))) dt.Columns.Add(new DataColumn("CurrencyValue", GetType(Double))) ' Define the primary key for the table as the IntegerValue ' column (column 0). To do this, first create an array of ' DataColumns to represent the primary key. The primary key can ' consist of multiple columns, but in this example, only ' one column is used. Dim keys(1) As DataColumn keys(0) = dt.Columns(0) ' Then assign the array to the PrimaryKey property of the DataTable. dt.PrimaryKey = keys ' Populate the table with sample values. Dim i As Integer For i = 0 To 8 dr = dt.NewRow() dr(0) = i dr(1) = "Item " & i.ToString() dr(2) = 1.23 * (i + 1) dt.Rows.Add(dr) Next ' To persist the data source between posts to the server, ' store it in session state. Session("Source") = dt Dim dv As DataView = New DataView(dt) Return dv End Function Sub Page_Load(sender As Object, e As EventArgs) ' Load sample data only once, when the page is first loaded. If Not IsPostBack Then ItemsGrid.DataSource = CreateDataSource() ItemsGrid.DataBind() End If End Sub Sub Delete_Command(sender As Object, e As DataGridCommandEventArgs) ' Retrieve the data table from session state. Dim dt As DataTable = CType(Session("Source"), DataTable) ' Retrieve the data row to delete from the data table. ' Use the DataKeys property of the DataGrid control to get ' the primary key value of the selected row. ' Search the Rows collection of the data table for this value. Dim row As DataRow row = dt.Rows.Find(ItemsGrid.DataKeys(e.Item.ItemIndex)) ' Delete the item selected in the DataGrid from the data source. If Not row is Nothing Then dt.Rows.Remove(row) End If ' Save the data source. Session("Source") = dt ' Create a DataView and bind it to the DataGrid control. Dim dv As DataView = New DataView(dt) ItemsGrid.DataSource = dv ItemsGrid.DataBind() End Sub </script> </head> <body> <form runat="server"> <h3>BaseDataList DataKeys and DataKeyField Example</h3> <asp:DataGrid id="ItemsGrid" BorderColor="Black" ShowFooter="False" CellPadding=3 CellSpacing="0" HeaderStyle-BackColor="#aaaadd" DataKeyField="IntegerValue" OnDeleteCommand="Delete_Command" runat="server"> <Columns> <asp:ButtonColumn Text="Delete" CommandName="Delete"/> </Columns> </asp:DataGrid> </form> </body> </html>
<%@ Page Language="C#" AutoEventWireup="True" %> <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.SqlClient" %> <html> <head> <script runat="server"> ICollection CreateDataSource() { // Create sample data for the DataGrid control. DataTable dt = new DataTable(); DataRow dr; // Define the columns of the table. dt.Columns.Add(new DataColumn("IntegerValue", typeof(Int32))); dt.Columns.Add(new DataColumn("StringValue", typeof(string))); dt.Columns.Add(new DataColumn("CurrencyValue", typeof(double))); // Define the primary key for the table as the IntegerValue // column (column 0). To do this, first create an array of // DataColumns to represent the primary key. The primary key can // consist of multiple columns, but in this example, only // one column is used. DataColumn[] keys = new DataColumn[1]; keys[0] = dt.Columns[0]; // Then assign the array to the PrimaryKey property of the DataTable. dt.PrimaryKey = keys; // Populate the table with sample values. for (int i = 0; i < 9; i++) { dr = dt.NewRow(); dr[0] = i; dr[1] = "Item " + i.ToString(); dr[2] = 1.23 * (i + 1); dt.Rows.Add(dr); } // To persist the data source between posts to the server, // store it in session state. Session["Source"] = dt; DataView dv = new DataView(dt); return dv; } void Page_Load(Object sender, EventArgs e) { // Load sample data only once, when the page is first loaded. if (!IsPostBack) { ItemsGrid.DataSource = CreateDataSource(); ItemsGrid.DataBind(); } } void Delete_Command(Object sender, DataGridCommandEventArgs e) { // Retrieve the data table from session state. DataTable dt = (DataTable)Session["Source"]; // Retrieve the data row to delete from the data table. // Use the DataKeys property of the DataGrid control to get // the primary key value of the selected row. // Search the Rows collection of the data table for this value. DataRow row; row = dt.Rows.Find(ItemsGrid.DataKeys[e.Item.ItemIndex]); // Delete the item selected in the DataGrid from the data source. if(row != null) { dt.Rows.Remove(row); } // Save the data source. Session["Source"] = dt; // Create a DataView and bind it to the DataGrid control. DataView dv = new DataView(dt); ItemsGrid.DataSource = dv; ItemsGrid.DataBind(); } </script> </head> <body> <form runat="server"> <h3>BaseDataList DataKeys Example</h3> <asp:DataGrid id="ItemsGrid" BorderColor="Black" ShowFooter="False" CellPadding=3 CellSpacing="0" HeaderStyle-BackColor="#aaaadd" DataKeyField="IntegerValue" OnDeleteCommand="Delete_Command" runat="server"> <Columns> <asp:ButtonColumn Text="Delete" CommandName="Delete"/> </Columns> </asp:DataGrid> </form> </body> </html>


System.Web.UI.WebControls.DataKeyCollection


Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


DataKeyCollection コンストラクタ
アセンブリ: System.Web (system.web.dll 内)



Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


DataKeyCollection プロパティ

名前 | 説明 | |
---|---|---|
![]() | Count | コレクション内の項目の数を取得します。 |
![]() | IsReadOnly | DataKeyCollection 内の項目を変更できるかどうかを示す値を取得します。 |
![]() | IsSynchronized | DataKeyCollection が同期されている (スレッド セーフである) かどうかを示す値を取得します。 |
![]() | Item | コレクション内の指定したインデックス位置にあるキー フィールドを取得します。 |
![]() | SyncRoot | DataKeyCollection へのアクセスを同期するために使用するオブジェクトを取得します。 |

DataKeyCollection メソッド

名前 | 説明 | |
---|---|---|
![]() | CopyTo | 指定した System.Array オブジェクトに DataKeyCollection の項目をすべてコピーします。コピー操作は、System.Array オブジェクトの指定したインデックス位置から開始されます。 |
![]() | Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 ( Object から継承されます。) |
![]() | GetEnumerator | DataKeyCollection 内のすべてのキー フィールドを格納している System.Collections.IEnumerator 実装オブジェクトを作成します。 |
![]() | GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 ( Object から継承されます。) |
![]() | GetType | 現在のインスタンスの Type を取得します。 ( Object から継承されます。) |
![]() | ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 ( Object から継承されます。) |
![]() | ToString | 現在の Object を表す String を返します。 ( Object から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 ( Object から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 ( Object から継承されます。) |

DataKeyCollection メンバ
データ ソースの各レコードのキー フィールドを格納するコレクションを表します。このクラスは継承できません。
DataKeyCollection データ型で公開されるメンバを以下の表に示します。


名前 | 説明 | |
---|---|---|
![]() | Count | コレクション内の項目の数を取得します。 |
![]() | IsReadOnly | DataKeyCollection 内の項目を変更できるかどうかを示す値を取得します。 |
![]() | IsSynchronized | DataKeyCollection が同期されている (スレッド セーフである) かどうかを示す値を取得します。 |
![]() | Item | コレクション内の指定したインデックス位置にあるキー フィールドを取得します。 |
![]() | SyncRoot | DataKeyCollection へのアクセスを同期するために使用するオブジェクトを取得します。 |

名前 | 説明 | |
---|---|---|
![]() | CopyTo | 指定した System.Array オブジェクトに DataKeyCollection の項目をすべてコピーします。コピー操作は、System.Array オブジェクトの指定したインデックス位置から開始されます。 |
![]() | Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 (Object から継承されます。) |
![]() | GetEnumerator | DataKeyCollection 内のすべてのキー フィールドを格納している System.Collections.IEnumerator 実装オブジェクトを作成します。 |
![]() | GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 (Object から継承されます。) |
![]() | GetType | 現在のインスタンスの Type を取得します。 (Object から継承されます。) |
![]() | ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 (Object から継承されます。) |
![]() | ToString | 現在の Object を表す String を返します。 (Object から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 (Object から継承されます。) |

- DataKeyCollectionのページへのリンク