Announcement

Collapse
No announcement yet.

Synchronisation View / GUI

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Synchronisation View / GUI

    Halllo
    Bisschen schwierig zu entscheiden, ob das in die Kategorie MS-SQL-Server oder C# gehört...

    Ich hab's jetzt noch nicht ausprobiert, doch ich plane für meine (read-only) Grids (Die Datensätze werden in modalen Detail-Dialogs bearbeitet) auf der DB Views einzurichten. Mit dem netten Nebeneffekt, dass eine View vom Server auotmatisch aktualisiert wird (zumindest auf gewissen DBs) - via den ADO.NET/DataSet-Brücken sollten sich - so die Theorie - Änderungen gleich auf dem GUI-Client wiederspiegeln.

    Nun habe ich aber auch programmatische Arbeiten (aufbau eines Baumes) - es wäre toll, wenn es eine Art Event gäbe, dass der Applikation mitteilt, dass der Baum neu aufgbeaut werden soll, wenn sich eine bestimmte Tabelle ändert.

    Wie könnte sowas aussehen ? Evtl. irgend ein Trigger auf dem Server ?

    Roger

  • #2
    Bin mir nicht sicher, ob ich die Frage richtig verstanden habe. Aber es geht wohl darum, im Grid am Client möglichst datenaktuell zu bleiben. Ich programmiere selber mit einem ähnlichen Ansatz und habe das so gelöst, dass ich am Server eine Eventtabelle führe. In der könnte zB ein Eintrag mit Key "Teilebaum" stehen. Weiters gibt es in den Tabellen mit Feldern, die eine Änderung des Baumes bewirken, Trigger, die bei Insert/Update/Delete in die Eventtabelle in den record mit Key "Teilebaum" das aktuelle Änderungsdatum reinschreiben.
    Am Client wiederum merke ich mir beim Einlesen von Daten, die von solchen Änderungen betroffen sind, jeweils das Aktualisierungsdatum aus der Eventtabelle. Nun habe ich Refreshroutinen, die zu bestimmten Anlässen aufgerufen werden. Diese checken zuerst das Änderungsdatum in der Eventtabelle und vergleichen das mit dem selber gespeicherten. Sind diese ungleich werden die Daten neu eingelesen, ansonsten gab es keine Änderung.
    Damit könnte man es sich leisten, alle 10 Sekunden nach Änderungen zu prüfen, da das Holen des entsprechenden Datums aus der Eventtabelle ja einen vernachlässigbaren Aufwand bedeutet. Automatisch durch den Server ausgelöst mache ich das nicht, da ich zB keine Änderung wünsche, wenn der Benutzer gerade einen Datensatz bearbeitet oder in der Liste scrollt.
    Also in deinem Fall wäre da dann ein Timer, der in definiertem Abstand das aktuelle Änderungsdatum zum Record mit Key "Teilebaum" aus der Eventtabelle liest und wenn das anders als das am Client gespeicherte ist, ein Neuzeichnen des Baumes auslöst und sich das neue Änderungsdatum merkt.
    Die Aktivität kann so auch bedarfsgesteuert erfolgen, ich habe zB Pagecontrols im Einsatz und wenn ich auf einer anderen Page bin, den Baum also gerade sowieso nicht sehe, brauche ich kein Update. Da bräuchte der Timer nur aktiv sein, wenn man auch auf der Seite mit der Baumstruktur ist.

    bye,
    Helmu

    Comment

    Working...
    X