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.

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, der die Namen der primären Schlü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 verwendet wird, um die Namen zu trennen. Um dieses Beispiel auszuführen, erstellen Sie eine Website mit folgendem Code:

  • Eine Verbindung mit der AdventureWorksLT-Beispieldatenbank und eine Verbindungszeichenfolge mit dem Namen AdventureWorksLTConnectionString. Informationen zum Einrichten der AdventureWorksLT-Beispieldatenbank finden Sie unter Vorgehensweise: Einrichten einer AdventureWorksLT-Beispieldatenbank für ASP.NET Entwicklung.

  • Eine LINQ-to-SQL-Datenkontextklasse mit dem Namen AdventureWorksLTDataClassesDataContext. 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 Bzw. 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 jede Zeile durch einen ganzzahligen Wert eindeutig identifiziert wird. 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 zu aktualisierende oder zu löschende Zeile anzugeben.

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

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

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

Hinweis

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

Wenn Sie automatisch generierte Feldspalten verwenden (indem Sie die AutoGenerateColumns -Eigenschaft auf truefestlegen), stellt das GridView Steuerelement sicher, dass die Spalten, die dem in der DataKeyNames -Eigenschaft angegebenen Feld oder Feldern entsprechen, schreibgeschützt sind.

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

Gilt für:

Weitere Informationen