GridView.DataKeyNames Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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
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.Always
festlegen.
Wenn Sie automatisch generierte Feldspalten 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 Feldern entsprechen, schreibgeschützt sind.
Wenn die Visible Eigenschaft eines Spaltenfelds auf false
festgelegt 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.