Partager via


Utilisation de la ligne pour les nouveaux enregistrements dans le contrôle DataGridView Windows Forms

Mise à jour : novembre 2007

Lorsque vous utilisez un DataGridView pour modifier des données dans votre application, vous souhaiterez souvent donner aux utilisateurs la possibilité d'ajouter des nouvelles lignes de données au magasin de données. Le contrôle DataGridView prend en charge ces fonctionnalités en fournissant une ligne de nouveaux enregistrements, qui sont toujours indiqués comme étant la dernière ligne. Elle est marquée avec un symbole d'astérisque (*) dans son en-tête de ligne. Les sections suivantes passent en revue quelques-uns des aspects que vous devez prendre en considération lorsque vous programmez avec la ligne des nouveaux enregistrements activée.

Affichage de la ligne pour les nouveaux enregistrements

Utilisez la propriété AllowUserToAddRows pour indiquer si la ligne des nouveaux enregistrements est affichée. La valeur par défaut de cette propriété est true.

Pour le cas lié aux données, la ligne pour les nouveaux enregistrements sera indiquée si la propriété AllowUserToAddRows du contrôle et la propriété IBindingList.AllowNew de la source de données ont toutes les deux la valeur true. Si l'une ou l'autre a la valeur false, la ligne ne sera pas indiquée.

Remplissage de la ligne pour les nouveaux enregistrements avec des données par défaut

Lorsque l'utilisateur sélectionne la ligne pour les nouveaux enregistrements comme ligne actuelle, le contrôle DataGridView déclenche l'événement DefaultValuesNeeded.

Cet événement fournit l'accès au nouveau DataGridViewRow et vous permet de remplir la nouvelle ligne avec les données par défaut. Pour plus d'informations, consultez Comment : spécifier des valeurs par défaut pour les nouvelles lignes dans le contrôle DataGridView Windows Forms

La collection Rows

La ligne pour les nouveaux enregistrements est contenue dans la collection Rows du contrôle DataGridView, mais se comporte différemment à deux égards :

  • La ligne pour les nouveaux enregistrements ne peut pas être supprimée par programme de la collection Rows. Une InvalidOperationException est levée si cette opération est tentée. L'utilisateur ne peut pas non plus supprimer la ligne pour les nouveaux enregistrements. La méthode DataGridViewRowCollection.Clear ne supprime pas cette ligne de la collection Rows.

  • Aucune ligne ne peut être ajoutée après la ligne pour les nouveaux enregistrements. Une InvalidOperationException est levée si cette opération est tentée. En conséquence, la ligne pour les nouveaux enregistrements est toujours la dernière ligne dans le contrôle DataGridView. Les méthodes de DataGridViewRowCollection qui ajoute des lignes — Add, AddCopy et AddCopies— appellent toutes les méthodes d'insertion en interne lorsque la ligne pour les nouveaux enregistrements est présente.

Personnalisation visuelle de la ligne pour les nouveaux enregistrements

Lorsque la ligne pour les nouveaux enregistrements est créée, elle repose sur la ligne spécifiée par la propriété RowTemplate. Tous les styles de cellule qui ne sont pas spécifiés pour cette ligne sont hérités d'autres propriétés. Pour plus d'informations sur l'héritage du style de cellule, consultez Styles de cellules dans le contrôle DataGridView Windows Forms.

Les valeurs initiales affichées par les cellules dans la ligne pour les nouveaux enregistrements sont récupérées de la propriété DefaultNewRowValue de chaque cellule. Pour les cellules de type DataGridViewImageCell, cette propriété retourne une image d'espace réservé. Sinon, cette propriété retourne null. Vous pouvez substituer cette propriété pour retourner une valeur personnalisée. Toutefois, ces valeurs initiales peuvent être remplacées par un gestionnaire d'événements DefaultValuesNeeded lorsque le focus se retrouve sur la ligne pour les nouveaux enregistrements.

Les icônes standard pour l'en-tête de cette ligne, une flèche ou un astérisque, ne sont pas exposées publiquement. Si vous souhaitez personnaliser les icônes, vous devrez créer une classe DataGridViewRowHeaderCell personnalisée.

Les icônes standard utilisent la propriété ForeColor du DataGridViewCellStyle utilisé par la cellule d'en-tête de ligne. Les icônes standard ne sont pas restituées s'il n'y a pas assez d'espace pour les afficher complètement.

Si la cellule d'en-tête de ligne a un jeu de valeurs de chaînes, et s'il n'y a pas assez d'espace pour à la fois le texte et icône, l'icône est ignorée en premier.

Tri

En mode indépendant, les nouveaux enregistrements sont toujours ajoutés à la fin du DataGridView même si l'utilisateur a trié le contenu du DataGridView. L'utilisateur doit appliquer encore le tri pour trier la ligne à la position correcte ; ce comportement est similaire à celui du contrôle ListView.

En modes lié aux données et virtuel, le comportement d'insertion lorsqu'un tri est appliqué varie en fonction de l'implémentation du modèle de données. Pour ADO.NET, la ligne est triée immédiatement dans la position correcte.

D'autres remarques sur la ligne pour les nouveaux enregistrements

Vous ne pouvez pas attribuer à la propriété Visible de cette ligne la valeur false. Une InvalidOperationException est levée si cette opération est tentée.

La ligne pour les nouveaux enregistrements est toujours créée dans l'état désélectionné.

Mode virtuel

Si vous implémentez le mode virtuel, vous devrez assurer un suivi pour déterminer quand une ligne pour les nouveaux enregistrements est nécessaire dans le modèle de données et quand annuler l'ajout de la ligne. L'implémentation exacte de ces fonctionnalités dépend de l'implémentation du modèle de données et de sa sémantique de transaction ; par exemple, selon que la portée de validation se situe au niveau de la cellule ou de la ligne. Pour plus d'informations, consultez Mode virtuel dans le contrôle DataGridView Windows Forms.

Voir aussi

Tâches

Comment : spécifier des valeurs par défaut pour les nouvelles lignes dans le contrôle DataGridView Windows Forms

Référence

DataGridView

DataGridView.DefaultValuesNeeded

Autres ressources

Saisie de données dans le contrôle DataGridView Windows Forms