Comment mettre à jour un datagridview en C # chaque minute
-
03-07-2019 - |
Question
Je travaille actuellement sur un projet en C # qui est assez simple.
J'ai une boîte d'état, deux boutons et un dataGridView.
Lorsque le formulaire est chargé, le dataGridView est rempli correctement.
Ce que je voudrais faire est ensuite de mettre à jour cette table toutes les 45 secondes pour refléter toute modification apportée à la base de données.
Je cherche des suggestions sur une technique pour y parvenir. Je cherchais des informations claires, mais cela me semble un peu insuffisant.
La solution
- Ajoutez un contrôle
Timer
à votre formulaire. (C'est dans la catégorie des composants) - Définissez sa propriété
Interval
sur45000
(la valeur représente des millisecondes) - Définissez la propriété
Enabled
du temporisateur surTrue
dans le concepteur de formulaire ou quelque part dans votre code. - Ajouter un gestionnaire pour l'événement
Tick
du minuteur (vous pouvez l'obtenir en double-cliquant sur le minuteur) - Dans le gestionnaire
Tick
, mettez à jour votredataGridView
Votre gestionnaire ressemblera à ceci:
private void timer1_Tick(object sender, EventArgs e)
{
// Update DataGridView
}
Si vous devez suspendre les mises à jour pour une raison quelconque, vous pouvez appeler timer1.Stop ()
pour arrêter l'exécution du chronomètre et utiliser timer1.Start ()
pour redémarrez-le.
Autres conseils
Comme d'autres l'ont suggéré, utilisez un minuteur pour actualiser la base de données. La seule chose que j'aimerais ajouter, c'est que lorsque vous interrogez à nouveau la base de données, ne définissez pas simplement la source de données de DataGridView sur la nouvelle table. Au contraire, fusionnez-le avec la table existante. La raison en est que si l'utilisateur se trouve au milieu de la grille, par exemple en regardant une ligne particulière, si vous réinitialisez la source de données sur une nouvelle table, la grille entière s'actualisera et perdra sa place. Ennuyant comme l'enfer! Si vous le fusionnez , il sera transparent pour l'utilisateur.
Lors de l’utilisation de la méthode Merge, il faut savoir que la table doit avoir une clé primaire. Revérifiez pour vous assurer que le DataTable lui-même a une clé primaire. Ce n'est pas toujours le retirer de la base de données. Vous devrez peut-être faire quelque chose comme:
table.PrimaryKey = new DataColumn[] {table.Columns["ID"]};
Utilisez un contrôle du minuteur, puis effectuez les mises à jour aux incréments spécifiques dont vous avez besoin.
Vous pouvez créer un minuterie . qui se déclenche toutes les 45 secondes et met à jour votre interface utilisateur à partir de son gestionnaire d'événements.
vous voulez dire que je devrais relier datagridview à nouveau dans le gestionnaire d'événements Timer?