Auswahldialog

  • Folgende Situation:
    Ich habe eine Maske als Auswahldialog gebaut. In der Maske eine eingebettete Ansicht und ein eingebetteter Ordner. Die Ansicht ist immer dieselbe, der Ordner jedoch abhängig von der Maske, aus der dieser Auswahldialog aufgerufen wird.
    Anzeige von Ansicht und Ordner funktioniert.
    Jetzt möchte ich in diesem Dialog Dokumente aus dem Ordner entfernen können (klappt einwandfrei über den Systembefehl innerhalb des Ordners), aber auch Dokumente per Knopfdruck aus der Ansicht in den Ordner kopieren können.
    Problem dabei: Wo positioniere ich den "Kopieren"-Knopf? Die Ansicht weiß, welche(s) Dokument(e) ausgewählt ist/sind, weiß aber nicht, wie der Ordner heißt. Die Dialog-Maske weiß, wie der Ordner heißt, aber nicht, welche Dokumente in der Ansicht ausgewählt sind.
    Hat jemand hier irgendeine Idee, wie ich dieses Problem lösen kann?
    An den Umweg über einen temporären Ordner nur für die Anzeige habe ich schon nachgedacht, aber vielleicht gibt es ja doch den direkten Weg.

  • Mach die Aktion in die Ansichten/Ordner und ruf in der Aktion einen Agenten auf:


    Beim Aufruf der Aktion weisst du sowohl in welcher Ansicht/Ordner du dich befindest (NotesUIWorkspace.CurrentView), wie auch welche Dokumente selektiert sind (Agententyp All Selected Documents und dann auf die UnprocessedDocuments)

  • Danke für die schnelle Antwort, aber soweit war ich selbst schon gekommen.
    Ich hatte mich vielleicht nicht klar genug ausgedrückt.
    In der Ansicht weiß ich, welche Dokumente selektiert sind und wie der Name *dieser* Ansicht lautet. Ich weiß aber nicht, wie der (andere) in der Maske eingebettete Ordner heißt, in den die selektierten Dokumente rein sollen. Der wird nämlich per Formel/Script/$WHATSOEVER in die Maske eingebunden und ist nicht fest. Und genau da ist mein Problem.


    So weit, dass ich die entsprechenden Knöpfe in die Ordner/Ansichten reinbaue, war ich ja schon. Ich komme aber von der Ansicht nicht an den Namen des Ordners heran, da die Ansicht darüber keinerlei Informationen hat und auch die Dokumente darüber nichts hergeben. Das weiß nur die Maske mit beiden eingebetteten Elementen bzw. die Maske, von der letztere als Auswahldialog aufgerufen wird.


    Kann ich in einer eingebetteten Ansicht irgendwie an die Daten der Maske herankommen, in der die Ansicht eingebettet ist?
    Oder in der Maske irgendwie an die selektierten Dokumente der eingebetteten Ansicht?

  • Keiner 'ne Idee?
    Oder geht es schlichtweg gar nicht?


    Muss ich wohl doch den Umweg über einen temporären Ordner gehen und beim Schließen der Maske die Dokumente umkopieren.

  • In dem Dialog wird der Ordnername ja bereits ermittelt, das ist ja gar nicht das Problem. Das Problem ist die Ansicht, denn die kennt die Vorgaben für die Ermittlung des Ordnernamens nicht. Und da ja nur die Ansicht die selektierten Dokumente kennt, muss sie die Dokumente kopieren. Also doch erst in einen temporären, fixen Ordner und beim Verlassen des Dialogs umkopieren.


    Es würde direkt funktionieren, wenn eingebettete Elemente Informationen über die Elemente hätten, die sie einbetten bzw. umgekehrt. Aber das scheint ja wohl nicht der Fall zu sein. Ist ja auch nirgendwo dokumentiert.
    :-/

    • Offizieller Beitrag

    schreib Dir beim Öffnen des Dokumenetes alle Daten dem Dokument (DocumentUnid, Ordnernamen usw.) in ein userbezogenes Profildokument. Mit der Aktion in der Ansicht kannst Du dann dieses Dokument wieder auslesen und hast den Ordnernamen, wohin die Dokumente kopiert werden sollen.


    Sobald der Ordner sich ändert, musst Du natürlich Dein Prof.-dokument ändern und beim Schließen der Maske löscht Du den Eintrag im Prof.-dokument.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • Die Ansicht kann keine Aktionen ausführen, das kann nur eine Aktion in derselbigen bzw ein Agent der in einer Aktion der Ansicht aufgerufen wird.
    Und wenn die im Dialog schon ermittelt wird, dann kannst du ja auch in dem Script das den Dialog aufruft auf diese Information zugreifen

    • Offizieller Beitrag

    teste auch, was passiert, wenn Du mehrere Dokumente gleichzeitig öffnest! ! ! !


    Gruß
    Dirk

  • Wenn ich in der Ansicht mehrere Dokumente markiere, werden alle kopiert, das funktioniert, LotusScript sei Dank ;)


    Was (noch) etwas unschön ist: In dem eingebetten Ordner tauchen die Dokumente erst auf, wenn ich hier explizit mit F9 aktualisiere - Das Frontend weiß ja noch nichts davon, dass der Ordner jetzt weitere Dokumente hat (kopiert wird im Backend)
    Ein refresh auf den Ordner (im Backend) bringt hier nichts (was zu erwarten war), und auch ein ReloadWindow auf den aktuellen UIWorkspace aktualisiert nicht den Ordner, da das Reload ja in der Ansicht stattfindet.

    • Offizieller Beitrag

    mach mal einen Refresh auf die Maske mit den eingebetteten Ordner und er eingebetteten Ansicht.


    Hilft dies nicht, kannst Du die Maske schließen und neu öffnen.


    Gruß
    Dirk

  • Das Problem ist, dass die Kopieraktion jetzt in der eingebetteten Ansicht stattfindet - und die weiß nix von der Maske, in der sie eingebettet ist, und auch nix von dem dort ebenfalls eingebetteten Ordner.
    Ich probiere nochmal mit den Ordnereinstellungen - vílleicht kann ich ja den Ordner dazu bewegen, doch bei neuen Dokumenten, die Ansicht zu aktualisiern.

    • Offizieller Beitrag

    doch, wenn Du die UniversalID mit ins Prof.-Dokument schreibst.


    Bin mir nur nicht sicher, ob beim Öffnen mit ws.editDocument das aktuelle odere ein neues Dokument im UI geöffnet wird.


    Gruß
    Dirk

  • Moment, UniversalID bezieht sich doch auf ein Dokument im *Backend*?! Dort wird ja aktualisiert, mir geht es ums Frontend.


    Mein Auswahldialog ist zwar eine Maske, wird aber per @DialogBox aus einer anderen Maske heraus geöffnet. Was nützt es mir, wenn ich das (Backend-)Dokument aktualisiere?
    UniversalID der Maske aus dem Frontend?!

    • Offizieller Beitrag

    über die UniversalID kommst Du eventuell auch ans Frontend-Dokument.

  • Zitat


    Diali schrieb:
    über die UniversalID kommst Du eventuell auch ans Frontend-Dokument.

    Code
    set doc = db.GetDocumentByUNID(Hier_die_UniversalID_aus_dem_Profil_eintragen)
    set uidoc = ws.EditDocument(true, doc)


    Genau das habe ich eben gerade ausprobiert, ohne diesen letzten Post gelesen zu haben.
    Fehlermeldung beim ws.EditDocument:


    Damit haben sich die anderen Optionen wohl erübrigt :(

  • Es soll aber der eingebettete Ordner im Auswahldialog aktualisiert werden. Dialog schließen ist also nicht.


    Ich bin mittlerweile so weit, auf den Dialog zu verzichten und die Auswahl direkt in die Maske einzubinden, die den bislang den Dialog aufgerufen hat. Mal schauen. wie das funktioniert.
    Alles in allem habt ihr mir mit euren Tipps aber schon sehr viel weiter geholfen.

    • Offizieller Beitrag
    Zitat

    Es soll aber der eingebettete Ordner im Auswahldialog aktualisiert werden. Dialog schließen ist also nicht.


    Wieso mach den Dialog zu und öffne diesen gleich wieder, dann stimmen auch die Ansichten und Ordner.


    Musst Dir in dem Dialog oder im Prof.-Dokument halt noch ein Feld setzen, welches die Abbruchbedingung für die Dialogschleife ist.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein