3 votes

Comment voir les modifications DataGridView sans changer de ligne

J'ai un DataGridView avec quelques DataGridViewComboBoxColumn. Les colonnes ont leur DataSource défini pour afficher certaines valeurs à choisir, cependant le DataGridView lui-même n'a pas son DataSource défini à quoi que ce soit. Je charge/sauve manuellement les valeurs.

Le problème : lorsque je change une des valeurs de la combobox, je ne vois pas le changement tant que je ne passe pas à une autre ligne.

Plus d'informations : le but principal de l'application est de déplacer des données d'une table à une autre. Dans une colonne, vous choisissez le champ source d'une table, et dans la colonne suivante, vous choisissez le champ de destination dans une autre table. Une fonctionnalité de l'application est que lorsque vous cliquez sur la cellule d'en-tête de ligne, elle affiche une liste des valeurs distinctes du champ source que vous avez sélectionné dans cette ligne. Cependant, lorsque vous mettez à jour le champ source, je ne peux pas obtenir les bons résultats en cliquant sur la cellule d'en-tête de ligne avant de quitter d'abord la ligne.

La question : quel est le moyen le plus simple pour que mes modifications prennent effet immédiatement au lieu de devoir quitter la ligne en premier ? J'ai mis en place quelque chose pour y parvenir une fois pour une colonne de case à cocher mais la solution que j'ai trouvée ne fonctionne pas pour une colonne de combobox. J'aimerais quelque chose qui fonctionne pour tout.

Merci !

Édition: Si vous êtes en train de lire ceci et de penser "C'est une mauvaise question", pourriez-vous me faire savoir pourquoi ? Je ne m'en fâche pas si vous votez négativement... J'aimerais juste comprendre si le problème vient du fait que c'est une 'mauvaise question SO', ou pensez-vous que je demande quelque chose que vous pensez n'est pas intelligent et est un mauvais pratiquer à suivre.

4voto

V4Vendetta Points 15354

Je suppose que vous voulez que la valeur soit validée dès qu'elle est sélectionnée, donc peut-être que cela pourrait vous aider à y parvenir. Abonnez-vous à CurrentCellDirtyStateChanged et voyez si cela fait ce que vous avez l'intention de faire.

void dataGridView1_CurrentCellDirtyStateChanged(object sender,
    EventArgs e)
{
    if (dataGridView1.IsCurrentCellDirty)
    {
        dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
    }
}

0voto

Otiel Points 6224

Êtes-vous à la recherche de l'CellValidated événement? Vous pouvez manuellement enregistrer les données dans cet événement.

0voto

Elephant Points 44

Essayez d'utiliser la fonction suivante :

dataGridView.RefreshEdit();

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X