Wie aktualisieren Sie eine Datagridview in C # jede Minute
-
03-07-2019 - |
Frage
ich an einem Projekt in C # arbeitete im Moment, die ganz einfach ist.
Ich habe ein Statusfeld, zwei Tasten und einen Datagridview.
Wenn das Formular Datagridview lädt richtig gefüllt ist.
Was würde ich zu tun ist dann, dass Tabelle Update alle 45 Sekunden alle Änderungen in der Datenbank zu reflektieren.
Ich suche nach Anregungen auf einer Technik, um dies zu erreichen. Ich habe für klare Informationen gesucht, aber es scheint ein wenig fehlt.
Lösung
- eine
Timer
Kontrolle zu Ihrem Formular hinzufügen. (Es ist in der Komponenten-Kategorie) - Legen Sie seine
Interval
Eigenschaft auf45000
(der Wert repräsentiert Millisekunden) - set Entweder die
Enabled
Eigenschaft des Timers in dem FormulardesignerTrue
, oder irgendwo in Ihrem Code. - Fügen Sie einen Handler für das
Tick
Ereignis des Timers (Sie können dies erhalten durch einen Doppelklick auf den Timer) - Im Inneren des
Tick
Handler, aktualisieren Sie IhredataGridView
Der Handler wird wie folgt aussehen:
private void timer1_Tick(object sender, EventArgs e)
{
// Update DataGridView
}
Wenn Sie Updates aus irgendeinem Grund zu suspendieren, können Sie timer1.Stop()
rufen Sie den Timer an der Ausführung zu stoppen, und verwenden Sie timer1.Start()
es wieder zu starten.
Andere Tipps
Wie andere vorgeschlagen haben, verwenden Sie einen Timer auf die Datenbank erneut abfragen. Das einzige, was Ich mag würde hinzufügen, dass, wenn Sie die Datenbank erneut abfragen, nicht nur die Datagridview Datasource in die neue Tabelle gesetzt. Vielmehr Merge es mit der vorhandenen Tabelle. Der Grund dafür ist, dass, wenn der Benutzer in der Mitte des Gitters ist zum Beispiel bei einer bestimmten Zeile suchen, wenn Sie die Datasource in eine neue Tabelle zurückzusetzen, wird das gesamte Netz aktualisieren und sie werden ihren Platz verlieren. Lästige wie die Hölle! Wenn Sie fusionieren es aber, wird es für den Benutzer nahtlos sein.
Das einzige, was zu beachten, wenn das Merge-Verfahren besteht darin, dass die Tabelle einen Primärschlüssel haben muss. Überprüfen Sie, um sicherzustellen, dass die Datatable selbst einen Primärschlüssel hat. Nicht immer ist es es zurückziehen aus der Datenbank. Sie müssen möglicherweise so etwas wie tun:
table.PrimaryKey = new DataColumn[] {table.Columns["ID"]};
eine Zeitsteuerung verwenden und dann Updates an den spezifischen Schritten ausführen Sie benötigen.
Sie könnten erstellen Timer dass feuert alle 45 Sekunden und die Benutzeroberfläche von seinen Event-Handler aktualisieren.
Sie meinen, dass ich wieder in Datagridview Timer-Ereignishandler binden sollte?