GridView.DataKeyNames Proprietà
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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à
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:
Connessione al database di esempio AdventureWorksLT e a una stringa di connessione denominata
AdventureWorksLTConnectionString
. Per informazioni su come configurare il database di esempio AdventureWorksLT, vedere Procedura: Configurare un database di esempio AdventureWorksLT per lo sviluppo ASP.NET.Classe di contesto dati LINQ-to-SQL denominata
AdventureWorksLTDataClassesDataContext
. Il contesto dati deve avere una classe per la tabella SalesOrderDetails. Per informazioni su come creare classi LINQ-to-SQL, vedere 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. È 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à .