GridView.DataKeyNames Eigenschaft

Definition

Ruft ein Array ab, das die Namen der primären Schlüsselfelder der in einem GridView-Steuerelement angezeigten Elemente enthält, bzw. legt das Array fest.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()

Eigenschaftswert

String[]

Ein Array, der die Namen der primären Schlüsselfelder für die in einem GridView-Steuerelement angezeigten Elemente enthält.An array that contains the names of the primary key fields for the items displayed in a GridView control.

Implementiert

Attribute

Beispiele

Im folgenden Beispiel wird veranschaulicht, wie die DataKeyNames-Eigenschaft verwendet wird, um das Schlüsselfeld der Datenquelle anzugeben.The following example demonstrates how to use the DataKeyNames property to specify the key field of the data source. Im Beispiel gibt das DataKeyNames-Attribut des GridView-Elements in Markup zwei Schlüsselfelder an, indem ein Komma verwendet wird, um die Namen zu trennen.In the example, the DataKeyNames attribute of the GridView element in markup specifies two key fields by using a comma to separate the names. Um dieses Beispiel auszuführen, erstellen Sie eine Website mit folgendem:To run this example, create a Web site that has the following:

  • Eine Verbindung zur AdventureWorksLT-Beispieldatenbank und eine Verbindungs Zeichenfolge mit dem Namen AdventureWorksLTConnectionString.A connection to the AdventureWorksLT sample database and a connection string that is named AdventureWorksLTConnectionString. Weitere Informationen zum Einrichten der AdventureWorksLT-Beispieldatenbank finden Sie unter Vorgehens Weise: Einrichten einer AdventureWorksLT-Beispieldatenbank für die ASP.net-Entwicklung.For information about how to set up the AdventureWorksLT sample database, see How to: Set Up an AdventureWorksLT Sample Database for ASP.NET Development.

  • Eine LINQ-to-SQL-Datenkontext Klasse mit dem Namen AdventureWorksLTDataClassesDataContext.A LINQ-to-SQL data context class that is named AdventureWorksLTDataClassesDataContext. Der Datenkontext muss eine-Klasse für die SalesOrderDetails-Tabelle aufweisen.The data context must have a class for the SalesOrderDetails table. Weitere Informationen zum Erstellen von LINQ-to-SQL-Klassen finden Sie unter 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>

Hinweise

Verwenden Sie die DataKeyNames-Eigenschaft, um das Feld oder die Felder anzugeben, die den Primärschlüssel der Datenquelle darstellen.Use the DataKeyNames property to specify the field or fields that represent the primary key of the data source. Diese Eigenschaft sollte nur auf die Felder festgelegt werden, die zum eindeutigen Identifizieren der einzelnen Zeilen erforderlich sind. beispielsweise die ID-Spalte, wenn die einzelnen Zeilen durch einen ganzzahligen Wert eindeutig identifiziert werden.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. Sie müssen die DataKeyNames-Eigenschaft festlegen, damit die automatischen Update-und Löschfunktionen des GridView-Steuer Elements funktionieren.You must set the DataKeyNames property in order for the automatic update and delete features of the GridView control to work. Die Werte dieser Schlüsselfelder werden an das Datenquellen-Steuerelement übermittelt, um die zu Aktualisier Ende oder zu löschende Zeile anzugeben.The values of these key fields are passed to the data source control in order to specify the row to update or delete.

Wenn Sie beim Aktualisieren oder Löschen einer Zeile den Datenschlüssel Wert abrufen müssen, verwenden Sie die Keys-Eigenschaft der Klasse GridViewUpdateEventArgs oder 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. e.Keys[0] enthält z. b. den Wert des ersten Daten Schlüssels in einem RowUpdating-oder RowDeleting-Ereignishandler.For example, e.Keys[0] holds the value of the first data key in a RowUpdating or RowDeleting event handler.

Wenn Sie den Datenschlüssel Wert abrufen müssen, wenn eine Zeile ausgewählt ist, verwenden Sie die SelectedDataKey-Eigenschaft.If you need to retrieve the data key value when a row is selected, use the SelectedDataKey property.

Wenn die DataKeyNames-Eigenschaft festgelegt ist, füllt das GridView-Steuerelement automatisch seine DataKeys-Auflistung mit den Werten aus dem angegebenen Feld bzw. den angegebenen Feldern, die eine bequeme Methode zum Zugreifen auf die Primärschlüssel der einzelnen Zeilen bereitstellt.When 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.

Hinweis

Das GridView Steuerelement speichert diese Schlüssel Feldwerte im Steuerelement Zustand.The GridView control stores these key field values in the control state. Wenn diese Werte vertrauliche Informationen enthalten, wird dringend empfohlen, dass Sie die Ansichts Zustands Verschlüsselung aktivieren, indem Sie die ViewStateEncryptionMode-Eigenschaft auf ViewStateEncryptionMode.Alwaysfestlegen.If these values contain sensitive information, it is strongly recommended that you enable view-state encryption by setting the ViewStateEncryptionMode property to ViewStateEncryptionMode.Always.

Wenn Sie automatisch generierte Feld Spalten verwenden (indem Sie die AutoGenerateColumns-Eigenschaft auf true) festlegen, stellt das GridView-Steuerelement sicher, dass die Spalten, die dem in der DataKeyNames-Eigenschaft angegebenen Feld oder den Feldern entsprechen, schreibgeschützt sind.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.

Wenn die Visible-Eigenschaft eines Spalten Felds auf falsefestgelegt ist, wird die Spalte nicht im GridView-Steuerelement angezeigt, und die Daten für die Spalte machen keinen Roundtrip an den Client.If 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. Wenn Sie möchten, dass die Daten für eine Spalte, die nicht sichtbar ist, für den Client verfügbar ist, fügen Sie den Feldnamen der DataKeyNames-Eigenschaft hinzu.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.

Gilt für:

Siehe auch