Condividi tramite


GridView.DataKeyNames Proprietà

Definizione

Ottiene o imposta una matrice contenente i nomi dei campi di chiave primaria degli elementi visualizzati in un controllo GridView.

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()

Valore della proprietà

String[]

Una matrice contenente i nomi dei campi di chiave primaria degli elementi visualizzati in un controllo GridView.

Attributi

Esempio

Nell'esempio seguente viene illustrato come utilizzare la DataKeyNames proprietà per specificare il campo chiave dell'origine dati. Nell'esempio l'attributo DataKeyNames dell'elemento GridView nel markup specifica due campi chiave usando una virgola per separare i nomi. Per eseguire questo esempio, creare un sito Web con il codice seguente:

<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. È consigliabile 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 intero identifica in modo univoco ogni riga. È necessario impostare la DataKeyNames proprietà in modo che le funzionalità di aggiornamento automatico ed eliminazione del GridView controllo funzionino. I valori di questi campi chiave vengono passati al controllo origine dati per specificare la riga da aggiornare o eliminare.

Se è necessario recuperare il valore della chiave dati durante l'aggiornamento o l'eliminazione di una riga, usare la Keys proprietà della GridViewUpdateEventArgs classe o GridViewDeleteEventArgs . Ad esempio, e.Keys[0] contiene il valore della prima chiave dati in un RowUpdating gestore eventi o RowDeleting .

Se è necessario recuperare il valore della chiave dati quando viene selezionata una riga, usare la SelectedDataKey proprietà .

Quando la DataKeyNames proprietà è impostata, il controllo popola DataKeys automaticamente la GridView raccolta con i valori del campo o dei campi specificati, che consente di accedere alle chiavi primarie di ogni riga.

Nota

Il GridView controllo archivia questi valori di campo chiave nello stato del controllo. Se questi valori contengono informazioni riservate, è consigliabile abilitare la crittografia dello stato di visualizzazione impostando la ViewStateEncryptionMode proprietà su ViewStateEncryptionMode.Always.

Quando si utilizzano colonne di campo generate automaticamente (impostando la AutoGenerateColumns proprietà su true), il GridView controllo verifica che le colonne corrispondenti al campo o ai campi specificati nella DataKeyNames proprietà siano di sola lettura.

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

Si applica a

Vedi anche