Freigeben über


GridView.DataKeyNames Eigenschaft

Definition

Dient zum Abrufen oder Festlegen eines Arrays, das die Namen der Primärschlüsselfelder für die elemente enthält, die in einem GridView Steuerelement angezeigt werden.

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; }
[<System.ComponentModel.TypeConverter(typeof(System.Web.UI.WebControls.StringArrayConverter))>]
member this.DataKeyNames : string[] with get, set
Public Overridable Property DataKeyNames As String()

Eigenschaftswert

String[]

Ein Array, das die Namen der Primärschlüsselfelder für die in einem GridView Steuerelement angezeigten Elemente enthält.

Attribute

Beispiele

Im folgenden Beispiel wird veranschaulicht, wie die DataKeyNames Eigenschaft verwendet wird, um das Schlüsselfeld der Datenquelle anzugeben. Im Beispiel gibt das DataKeyNames Attribut des GridView Elements im Markup zwei Schlüsselfelder an, indem ein Komma zum Trennen der Namen verwendet wird. Erstellen Sie zum Ausführen dieses Beispiels eine Website mit den folgenden Eigenschaften:

  • Eine Verbindung mit der AdventureWorksLT-Beispieldatenbank und einer Verbindungszeichenfolge mit dem Namen AdventureWorksLTConnectionString. Informationen zum Einrichten der AdventureWorksLT-Beispieldatenbank finden Sie unter How to: Set Up an AdventureWorksLT Sample Database for ASP.NET Development.

  • Eine LINQ-to-SQL-Datenkontextklasse, die benannt AdventureWorksLTDataClassesDataContextist. Der Datenkontext muss über eine Klasse für die Tabelle "SalesOrderDetails" verfügen. Informationen zum Erstellen von LINQ-to-SQL-Klassen finden Sie unter 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. Sie sollten diese Eigenschaft nur auf das Feld oder die Felder festlegen, die erforderlich sind, um jede Zeile eindeutig zu identifizieren. Beispielsweise die ID-Spalte, wenn ein ganzzahliger Wert jede Zeile eindeutig identifiziert. Sie müssen die DataKeyNames Eigenschaft festlegen, damit die automatischen Aktualisierungs- und Löschfunktionen des GridView Steuerelements funktionieren. Die Werte dieser Schlüsselfelder werden an das Datenquellensteuerelement übergeben, um die zeile anzugeben, die aktualisiert oder gelöscht werden soll.

Wenn Sie den Datenschlüsselwert beim Aktualisieren oder Löschen einer Zeile abrufen müssen, verwenden Sie die Keys Eigenschaft der Klasse oder GridViewDeleteEventArgs der GridViewUpdateEventArgs Klasse. Enthält beispielsweise e.Keys[0] den Wert des ersten Datenschlüssels in einem RowUpdating oder RowDeleting ereignishandler.

Wenn Sie den Datenschlüsselwert abrufen müssen, wenn eine Zeile ausgewählt wird, verwenden Sie die SelectedDataKey Eigenschaft.

Wenn die DataKeyNames Eigenschaft festgelegt wird, füllt das GridView Steuerelement seine DataKeys Auflistung automatisch mit den Werten aus dem angegebenen Feld oder den Feldern auf, die eine bequeme Möglichkeit zum Zugriff auf die Primärschlüssel jeder Zeile bieten.

Hinweis

Das GridView Steuerelement speichert diese Schlüsselfeldwerte im Steuerelementzustand. Wenn diese Werte vertrauliche Informationen enthalten, wird dringend empfohlen, die Ansichtszustandsverschlüsselung zu aktivieren, indem Sie die ViewStateEncryptionMode Eigenschaft auf ViewStateEncryptionMode.Alwaysfestlegen.

Wenn Sie automatisch generierte Feldspalten verwenden (durch Festlegen der AutoGenerateColumns Eigenschaft auf true), stellt das GridView Steuerelement sicher, dass die Spalten, die dem feld oder den in der DataKeyNames Eigenschaft angegebenen Feldern entsprechen, schreibgeschützt sind.

Wenn die Visible Eigenschaft eines Spaltenfelds festgelegt falseist, wird die Spalte nicht im GridView Steuerelement angezeigt, und die Daten für die Spalte machen keinen Roundtrip zum Client. Wenn die Daten für eine Spalte, die für den Client nicht sichtbar ist, verfügbar sein sollen, fügen Sie der Eigenschaft den Feldnamen hinzu DataKeyNames .

Gilt für:

Weitere Informationen