GridView.DataKeyNames プロパティ

定義

GridView コントロールに表示される項目の主キー フィールドの名前が格納された配列を取得または設定します。Gets or sets an array that contains the names of the primary key fields for the items displayed in a GridView control.

public:
 virtual property cli::array <System::String ^> ^ DataKeyNames { cli::array <System::String ^> ^ get(); void set(cli::array <System::String ^> ^ value); };
[System.ComponentModel.TypeConverter(typeof(System.Web.UI.WebControls.StringArrayConverter))]
public virtual string[] DataKeyNames { get; set; }
member this.DataKeyNames : string[] with get, set
Public Overridable Property DataKeyNames As String()

プロパティ値

String[]

GridView コントロールに表示される項目の主キー フィールドの名前が格納された配列。An array that contains the names of the primary key fields for the items displayed in a GridView control.

実装

属性

次の例は、 DataKeyNamesプロパティを使用して、データソースのキーフィールドを指定する方法を示しています。The following example demonstrates how to use the DataKeyNames property to specify the key field of the data source. この例では、 DataKeyNamesマークアップ内GridViewの要素の属性が、名前を区切るためにコンマを使用して2つのキーフィールドを指定しています。In the example, the DataKeyNames attribute of the GridView element in markup specifies two key fields by using a comma to separate the names. この例を実行するには、次のものを持つ Web サイトを作成します。To run this example, create a Web site that has the following:

  • AdventureWorksLT サンプルデータベースへの接続と、という名前AdventureWorksLTConnectionStringの接続文字列。A connection to the AdventureWorksLT sample database and a connection string that is named AdventureWorksLTConnectionString. AdventureWorksLT サンプルデータベースを設定する方法については、「 方法:ASP.NET 開発用の AdventureWorksLT サンプルデータベースを設定します。For information about how to set up the AdventureWorksLT sample database, see How to: Set Up an AdventureWorksLT Sample Database for ASP.NET Development.

  • という名前AdventureWorksLTDataClassesDataContextの LINQ to SQL データコンテキストクラス。A LINQ-to-SQL data context class that is named AdventureWorksLTDataClassesDataContext. データコンテキストには、SalesOrderDetails テーブルのクラスが必要です。The data context must have a class for the SalesOrderDetails table. LINQ to SQL クラスを作成する方法の詳細については、「 LINQ to SQL」を参照してください。For information about how to create LINQ-to-SQL classes, see LINQ to SQL.

<asp:LinqDataSource ID="LinqDataSource1" runat="server" 
    ContextTypeName="AdventureWorksLTDataClassesDataContext"
    EnableDelete="True" EnableInsert="True" EnableUpdate="True" 
    TableName="SalesOrderDetails">
</asp:LinqDataSource>

<asp:GridView ID="GridView1" runat="server" 
    AutoGenerateColumns="False" 
    DataKeyNames="SalesOrderID,SalesOrderDetailID"
    DataSourceID="LinqDataSource1">
    <Columns>
        <asp:CommandField ShowDeleteButton="True" 
            ShowEditButton="True" />
        <asp:BoundField DataField="SalesOrderID" 
            HeaderText="SalesOrderID" ReadOnly="True"
            SortExpression="SalesOrderID" />
        <asp:BoundField DataField="SalesOrderDetailID" 
            HeaderText="SalesOrderDetailID" InsertVisible="False"
            ReadOnly="True" SortExpression="SalesOrderDetailID" />
        <asp:BoundField DataField="OrderQty" 
            HeaderText="OrderQty" SortExpression="OrderQty" />
        <asp:BoundField DataField="ProductID" 
            HeaderText="ProductID" SortExpression="ProductID" />
        <asp:BoundField DataField="UnitPrice" 
            HeaderText="UnitPrice" SortExpression="UnitPrice" />
        <asp:BoundField DataField="ModifiedDate" 
            HeaderText="ModifiedDate" SortExpression="ModifiedDate" />
    </Columns>
</asp:GridView>
<asp:LinqDataSource ID="LinqDataSource1" runat="server" 
    ContextTypeName="AdventureWorksLTDataClassesDataContext"
    EnableDelete="True" EnableInsert="True" EnableUpdate="True" 
    TableName="SalesOrderDetails">
</asp:LinqDataSource>

<asp:GridView ID="GridView1" runat="server" 
    AutoGenerateColumns="False" 
    DataKeyNames="SalesOrderID,SalesOrderDetailID"
    DataSourceID="LinqDataSource1">
    <Columns>
        <asp:CommandField ShowDeleteButton="True" 
            ShowEditButton="True" />
        <asp:BoundField DataField="SalesOrderID" 
            HeaderText="SalesOrderID" ReadOnly="True"
            SortExpression="SalesOrderID" />
        <asp:BoundField DataField="SalesOrderDetailID" 
            HeaderText="SalesOrderDetailID" InsertVisible="False"
            ReadOnly="True" SortExpression="SalesOrderDetailID" />
        <asp:BoundField DataField="OrderQty" 
            HeaderText="OrderQty" SortExpression="OrderQty" />
        <asp:BoundField DataField="ProductID" 
            HeaderText="ProductID" SortExpression="ProductID" />
        <asp:BoundField DataField="UnitPrice" 
            HeaderText="UnitPrice" SortExpression="UnitPrice" />
        <asp:BoundField DataField="ModifiedDate" 
            HeaderText="ModifiedDate" SortExpression="ModifiedDate" />
    </Columns>
</asp:GridView>

注釈

DataKeyNamesプロパティを使用して、データソースの主キーを表すフィールドを指定します。Use the DataKeyNames property to specify the field or fields that represent the primary key of the data source. このプロパティは、各行を一意に識別するために必要なフィールドだけに設定する必要があります。たとえば、整数値が各行を一意に識別する場合は、ID 列です。You should only set this property to the field or fields that are required to uniquely identify each row; for example, the ID column if an integer value uniquely identifies each row. コントロールの自動更新DataKeyNames機能および削除機能を機能させるには、プロパティを設定する必要があります。 GridViewYou must set the DataKeyNames property in order for the automatic update and delete features of the GridView control to work. 更新または削除する行を指定するために、これらのキーフィールドの値がデータソースコントロールに渡されます。The values of these key fields are passed to the data source control in order to specify the row to update or delete.

行を更新または削除するときにデータキー値を取得する必要があるKeys場合GridViewUpdateEventArgsは、クラスまたGridViewDeleteEventArgsはクラスのプロパティを使用します。If you need to retrieve the data key value when updating or deleting a row, use the Keys property of either the GridViewUpdateEventArgs or GridViewDeleteEventArgs class. たとえば、 RowUpdatinge.Keys[0] 、またはRowDeletingイベントハンドラーの最初のデータキーの値を保持します。For example, e.Keys[0] holds the value of the first data key in a RowUpdating or RowDeleting event handler.

行を選択したときにデータキー値を取得する必要がある場合SelectedDataKeyは、プロパティを使用します。If you need to retrieve the data key value when a row is selected, use the SelectedDataKey property.

プロパティが設定されると、 GridViewコントロールは、指定DataKeysされたフィールドの値を使用してコレクションを自動的に作成します。これにより、各行の主キーにアクセスする便利な方法が提供されます。 DataKeyNamesWhen the DataKeyNames property is set, the GridView control automatically populates its DataKeys collection with the values from the specified field or fields, which provides a convenient way to access the primary keys of each row.

注意

コントロールGridViewは、これらのキーフィールドの値をコントロールの状態に格納します。The GridView control stores these key field values in the control state. これらの値に機密情報が含まれている場合は、 ViewStateEncryptionModeプロパティをにViewStateEncryptionMode.Always設定して、ビューステートの暗号化を有効にすることを強くお勧めします。If these values contain sensitive information, it is strongly recommended that you enable view-state encryption by setting the ViewStateEncryptionMode property to ViewStateEncryptionMode.Always.

自動的に生成されたフィールド列を使用するAutoGenerateColumns場合 ( trueプロパティをにGridView設定することによって)、コントロールは、 DataKeyNamesプロパティで指定されたフィールドに対応する列が読み取り専用であることを確認します。When you use automatically generated field columns (by setting the AutoGenerateColumns property to true), the GridView control makes sure that the columns that correspond to the field or fields specified in the DataKeyNames property are read-only.

列フィールドのfalse GridViewプロパティがに設定されている場合、その列はコントロールに表示されず、列のデータがクライアントに対してラウンドトリップすることはありません。 VisibleIf the Visible property of a column field is set to false, the column is not displayed in the GridView control and the data for the column does not make a round trip to the client. 表示されていない列のデータをクライアントで使用できるようにするには、 DataKeyNamesプロパティにフィールド名を追加します。If you want the data for a column that is not visible to be available to the client, add the field name to the DataKeyNames property.

適用対象

こちらもご覧ください