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.

War es hilfreich?

Lösung

  1. eine Timer Kontrolle zu Ihrem Formular hinzufügen. (Es ist in der Komponenten-Kategorie)
  2. Legen Sie seine Interval Eigenschaft auf 45000 (der Wert repräsentiert Millisekunden)
  3. set Entweder die Enabled Eigenschaft des Timers in dem Formulardesigner True, oder irgendwo in Ihrem Code.
  4. Fügen Sie einen Handler für das Tick Ereignis des Timers (Sie können dies erhalten durch einen Doppelklick auf den Timer)
  5. Im Inneren des Tick Handler, aktualisieren Sie Ihre dataGridView

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.

DataTable.Merge

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?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top