GridView.DataKeyNames Propriété

Définition

Obtient ou définit un tableau qui contient les noms des champs clés primaires pour les éléments affichés dans un contrôle 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()

Valeur de propriété

String[]

Tableau qui contient les noms des champs clés primaires pour les éléments affichés dans un contrôle GridView.

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 qui contient les éléments suivants :

  • Connexion à l’exemple de base de données AdventureWorksLT et chaîne de connexion nommée AdventureWorksLTConnectionString. Pour plus d’informations sur la configuration de l’exemple de base de données AdventureWorksLT, consultez Guide pratique pour configurer un exemple de base de données AdventureWorksLT pour ASP.NET développement.

  • 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 ou les champs qui représentent la clé primaire de la source de données. Vous devez uniquement définir cette propriété sur le 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 afin de 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 GridViewUpdateEventArgs classe ou GridViewDeleteEventArgs . Par exemple, e.Keys[0] contient la valeur de la première clé de données dans un gestionnaire d’événements RowUpdating ou .RowDeleting

Si vous devez récupérer la valeur de la 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 ou des champs spécifiés, ce qui fournit un moyen pratique d’accéder aux clés primaires de chaque ligne.

Notes

Le GridView contrôle stocke ces valeurs de champ de clé dans l’état de contrôle. Si ces valeurs contiennent des informations sensibles, il est vivement recommandé d’activer le chiffrement d’état d’affichage en définissant la ViewStateEncryptionMode propriété sur ViewStateEncryptionMode.Always.

Lorsque vous utilisez des colonnes de champ générées automatiquement (en définissant la AutoGenerateColumns propriété sur true), le GridView contrôle s’assure 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 sur false, la colonne n’est pas affichée dans le GridView contrôle et les données de la colonne n’effectuent pas d’aller-retour vers le client. Si vous souhaitez que les données d’une colonne qui n’est pas visible soient disponibles pour le client, ajoutez le nom du champ à la DataKeyNames propriété .

S’applique à

Voir aussi