GridView.DataKeyNames GridView.DataKeyNames GridView.DataKeyNames GridView.DataKeyNames Property

Definizione

Ottiene o imposta una matrice contenente i nomi dei campi di chiave primaria degli elementi visualizzati in un controllo GridView.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()

Valore della proprietà

String[]

Una matrice contenente i nomi dei campi di chiave primaria degli elementi visualizzati in un controllo GridView.An array that contains the names of the primary key fields for the items displayed in a GridView control.

Implementazioni

Esempi

Nell'esempio seguente viene illustrato come utilizzare la DataKeyNames proprietà per specificare il campo chiave dell'origine dati.The following example demonstrates how to use the DataKeyNames property to specify the key field of the data source. Nell'esempio, l' DataKeyNames attributo GridView dell'elemento nel markup specifica due campi chiave utilizzando una virgola per separare i nomi.In the example, the DataKeyNames attribute of the GridView element in markup specifies two key fields by using a comma to separate the names. Per eseguire questo esempio, creare un sito Web con i seguenti elementi:To run this example, create a Web site that has the following:

  • Una connessione al database di esempio AdventureWorksLT e una stringa di connessione denominata AdventureWorksLTConnectionString.A connection to the AdventureWorksLT sample database and a connection string that is named AdventureWorksLTConnectionString. Per informazioni su come configurare il database di esempio AdventureWorksLT, vedere procedura: Configurare un database di esempio AdventureWorksLT per lo sviluppoASP.NET.For information about how to set up the AdventureWorksLT sample database, see How to: Set Up an AdventureWorksLT Sample Database for ASP.NET Development.

  • Classe del contesto dati LINQ-to-SQL denominata AdventureWorksLTDataClassesDataContext.A LINQ-to-SQL data context class that is named AdventureWorksLTDataClassesDataContext. Il contesto dati deve avere una classe per la tabella SalesOrderDetails.The data context must have a class for the SalesOrderDetails table. Per informazioni su come creare classi LINQ to SQL, vedere 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>

Commenti

Utilizzare la DataKeyNames proprietà per specificare il campo o i campi che rappresentano la chiave primaria dell'origine dati.Use the DataKeyNames property to specify the field or fields that represent the primary key of the data source. È necessario impostare questa proprietà solo sul campo o sui campi necessari per identificare in modo univoco ogni riga; ad esempio, la colonna ID se un valore integer identifica in modo univoco ogni riga.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. È necessario impostare la DataKeyNames proprietà per consentire il funzionamento delle funzionalità GridView di aggiornamento e eliminazione automatiche del controllo.You must set the DataKeyNames property in order for the automatic update and delete features of the GridView control to work. I valori di questi campi chiave vengono passati al controllo origine dati in modo da specificare la riga da aggiornare o eliminare.The values of these key fields are passed to the data source control in order to specify the row to update or delete.

Se è necessario recuperare il valore della chiave dati quando si aggiorna o si elimina una riga, Keys utilizzare la proprietà della GridViewUpdateEventArgs classe GridViewDeleteEventArgs o.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. Ad esempio, e.Keys[0] in è incluso il valore della prima chiave dati in RowUpdating un RowDeleting gestore eventi o.For example, e.Keys[0] holds the value of the first data key in a RowUpdating or RowDeleting event handler.

Se è necessario recuperare il valore della chiave dati quando viene selezionata una riga, utilizzare la SelectedDataKey proprietà.If you need to retrieve the data key value when a row is selected, use the SelectedDataKey property.

Quando viene DataKeyNames impostata la proprietà, il GridView DataKeys controllo popola automaticamente la raccolta con i valori del campo o dei campi specificati, che fornisce un modo pratico per accedere alle chiavi primarie di ogni riga.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.

Nota

Il GridView controllo archivia i valori dei campi chiave nello stato del controllo.The GridView control stores these key field values in the control state. Se questi valori contengono informazioni riservate, si consiglia vivamente di abilitare la crittografia dello stato di visualizzazione impostando ViewStateEncryptionMode la proprietà ViewStateEncryptionMode.Alwayssu.If these values contain sensitive information, it is strongly recommended that you enable view-state encryption by setting the ViewStateEncryptionMode property to ViewStateEncryptionMode.Always.

Quando si utilizzano colonne di campo generate automaticamente, AutoGenerateColumns impostando la trueproprietà su, GridView il controllo verifica che le colonne che corrispondono DataKeyNames al campo o ai campi specificati nella proprietà siano di sola lettura.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.

Se la Visible proprietà di un campo colonna è impostata su false, la colonna non GridView viene visualizzata nel controllo e i dati per la colonna non costituiscono un round trip al 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. Se si desidera che i dati di una colonna che non è visibile siano disponibili per il client, aggiungere il nome del campo alla DataKeyNames proprietà.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.

Si applica a

Vedi anche