Das Notes Forum

Domino 9 und frühere Versionen => ND9: Entwicklung => Thema gestartet von: SD am 04.09.18 - 17:25:00

Titel: Embedded View in einem nicht selektierten Frame automatisch aktualisieren
Beitrag von: SD am 04.09.18 - 17:25:00
Guten Tag allerseits,

jetzt wird es hier bei mir kreativ. :-)

Ich konnte bereits einige nützliche Threads zum automatischen aktualisieren von Ansichten finden, z.B. per Timer in https://atnotes.de/index.php/topic,51678.0.html (https://atnotes.de/index.php/topic,51678.0.html) und https://atnotes.de/index.php/topic,9344.0.html (https://atnotes.de/index.php/topic,9344.0.html). Allerdings ist mein Problem, dass NotesUIView.ViewRefresh die falsche View refreshed, weil die richtige in einem anderen Rahmen steckt.

Genaugenommen habe ich ein Frameset mit mehreren Frames, in einem davon ist eine normale View, in der der User üblicherweise arbeitet. In einem anderen Frame ist eine Embedded View, in der etwas automatisch auftauchen soll, sobald es in dieser View landet. Das ganze ist ein wenig zeitkritisch, daher hätte ich gerne, dass die Dokumente dort möglichst zeitnah sichtbar sind und natürlich ohne dass der User erst die View anklicken und F9 drücken muss. Die Konstruktion ist ein bisschen ähnlich, wie ein Widget mit einer View drin, nur dass das ganze in der Datenbank selbst gebaut ist.

Die Lösung mit dem Timer ist schon gar nicht schlecht, allerdings habe ich keine Möglichkeit gefunden die ViewRefresh-Methode auf diese nicht-selektierte Embedded View laufen zu lassen. SetTargetFrame und dann das Dokument refreshen hilft mir anscheinend auch nicht weiter. Prinzipiell wäre es auch möglich die DB so umzubauen, dass die View nicht embedded ist, sondern ihre eigenen Frame bekommt, aber ich fürchte da habe ich das gleiche Problem. Der Cursor ist einfach üblicherweise in einem anderen Frame.

Habe ich da denn überhaupt irgendeine Chance?

Ich komme problemlos an die Backend-View ran, entweder per Timer im Client des Users, oder per updall -T auf dem Server, aber das aktualisiert das FrontEnd nicht (die "On Refresh"-Option der View ist auf "Refresh display from top row" gestellt).

Ich komme auch an die NotesUIView ran. Die könnte ich meinem Timer mitfüttern. Aber leider bietet diese keine Möglichkeit an sich selbst zu refreshen. Das scheint wohl nur über den NotesUIWorkspace zu gehen. Und der NotesUIWorkspace interessiert sich nur für die selektierte View.

Ideen wären sehr willkommen. :-)

Gruß
Stefan
Titel: Re: Embedded View in einem nicht selektierten Frame automatisch aktualisieren
Beitrag von: MaVo am 04.09.18 - 21:53:20
Stefan, ich habe die Aktualisierung einer bestimmten embView in einem Dokument mit mehreren embView wie folgt gelöst.

Code
Set view = db.Getview("embView2")
Call view.Refresh
Call ws.Viewrefresh()
Call ws.Viewrefresh()

Viell. klappt dies auch in Framesets.
Titel: Re: Embedded View in einem nicht selektierten Frame automatisch aktualisieren
Beitrag von: jBubbleBoy am 05.09.18 - 07:58:47
Meine Gedanken zu diesem Thema:
- Aktualisiert ein uiDoc.refresh nicht die embeddedView?
- Eventuell kann mit JavaScript ein anderes Notes-Frame aktualisieren werden.
- Die View einfach öffnen und die View mit dem Frame/Frameset verknüpfen.
- Ein Refresh mit @SetTargetFrame( targetframe ) und @Command([RefreshFrame]) durchführen.
Titel: Re: Embedded View in einem nicht selektierten Frame automatisch aktualisieren
Beitrag von: SD am 05.09.18 - 11:38:59
Über die Backend-View gehen und dann den Workspace refreshen hat mir leider nicht weitergeholfen. Die @-Formeln habe ich versucht über Evaluate einzubinden, hat aber auch nicht geholfen.

uiDoc.Refresh hat aber zum Erfolg geführt!

Ich habe den Timer jetzt aus der View rausgeworfen und in die Form eingebaut, in der die View embedded ist. Dort habe ich das richtige uiDoc zur Verfügung. Funktioniert wunderbar! Danke!

Gruß
Stefan