GridView.DataKeyNames Propriété
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Obtient ou définit un tableau qui contient les noms des champs de clé primaire pour les éléments affichés dans un GridView contrôle.
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()
Valeur de propriété
Tableau qui contient les noms des champs de clé primaire pour les éléments affichés dans un GridView contrôle.
- Attributs
Exemples
L’exemple suivant montre comment utiliser la DataKeyNames propriété pour spécifier le champ clé de la source de données. Dans l’exemple, l’attribut DataKeyNames de l’élément dans le GridView balisage spécifie deux champs clés à l’aide d’une virgule pour séparer les noms. Pour exécuter cet exemple, créez un site Web avec les éléments suivants :
Une connexion à l’exemple de base de données AdventureWorksLT et une chaîne de connexion nommée
AdventureWorksLTConnectionString. Pour plus d’informations sur la configuration de l’exemple de base de données AdventureWorksLT, consultez How to : Set Up an AdventureWorksLT Sample Database for ASP.NET Development.Classe de contexte de données LINQ-to-SQL nommée
AdventureWorksLTDataClassesDataContext. Le contexte de données doit avoir une classe pour la table SalesOrderDetails. Pour plus d’informations sur la création de classes LINQ-to-SQL, consultez 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>
Remarques
Utilisez la DataKeyNames propriété pour spécifier le champ ou les champs qui représentent la clé primaire de la source de données. Vous devez définir cette propriété uniquement sur le champ ou les champs requis pour identifier de manière unique chaque ligne ; par exemple, la colonne ID si une valeur entière identifie de manière unique chaque ligne. Vous devez définir la DataKeyNames propriété pour que les fonctionnalités de mise à jour et de suppression automatiques du GridView contrôle fonctionnent. Les valeurs de ces champs clés sont transmises au contrôle de source de données pour spécifier la ligne à mettre à jour ou supprimer.
Si vous devez récupérer la valeur de clé de données lors de la mise à jour ou de la suppression d’une ligne, utilisez la Keys propriété de la ou GridViewDeleteEventArgs de la GridViewUpdateEventArgs classe. Par exemple, e.Keys[0] contient la valeur de la première clé de données dans un gestionnaire d’événements ou RowDeleting d’un RowUpdating gestionnaire d’événements.
Si vous devez récupérer la valeur de clé de données lorsqu’une ligne est sélectionnée, utilisez la SelectedDataKey propriété.
Lorsque la DataKeyNames propriété est définie, le GridView contrôle remplit automatiquement sa DataKeys collection avec les valeurs du champ ou des champs spécifiés, ce qui offre un moyen pratique d’accéder aux clés primaires de chaque ligne.
Note
Le GridView contrôle stocke ces valeurs de champ de clé dans l’état du contrôle. Si ces valeurs contiennent des informations sensibles, il est fortement recommandé d’activer le chiffrement de l’état d’affichage en définissant la ViewStateEncryptionMode propriété ViewStateEncryptionMode.Alwayssur .
Lorsque vous utilisez des colonnes de champ générées automatiquement (en définissant la AutoGenerateColumns propriété truesur), le GridView contrôle vérifie que les colonnes qui correspondent au champ ou aux champs spécifiés dans la DataKeyNames propriété sont en lecture seule.
Si la Visible propriété d’un champ de colonne est définie falsesur , la colonne n’est pas affichée dans le GridView contrôle et les données de la colonne ne font pas d’aller-retour vers le client. Si vous souhaitez que les données d’une colonne qui ne soit pas visible soient disponibles pour le client, ajoutez le nom du champ à la DataKeyNames propriété.