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 Sie die DataKeyNames -Eigenschaft verwenden, 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 folgenden Eigenschaften:

  • 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 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 Update- und Löschfeatures 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 beim Aktualisieren oder Löschen einer Zeile den Datenschlüsselwert abrufen müssen, verwenden Sie entweder die Keys -Eigenschaft der GridViewUpdateEventArgs - oder GridViewDeleteEventArgs -Klasse. Enthält beispielsweise e.Keys[0] den Wert des ersten Datenschlüssels in einem RowUpdating Oder-Ereignishandler RowDeleting .

Wenn Sie den Datenschlüsselwert abrufen müssen, wenn eine Zeile ausgewählt ist, 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 angegebenen Feldern auf, was eine bequeme Möglichkeit zum Zugreifen 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, die Ansichtsstatusverschlüsselung zu 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 keine Roundtrips 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 der Eigenschaft den DataKeyNames Feldnamen hinzu.

Gilt für:

Weitere Informationen