Ich habe in einem Modul eine Liste. In dieser Liste will ich, wenn ich ein Listenelement bearbeite will ich eine Variable auswählen und einen OpenObjectButton haben. Das funktioniert auch.
Der OpenObjectButton erwartet aber als „objectID“: 42563 einen integer Wert.
Wie bekomme ich das dynamisch hin, also die ID der ausgewählten Variable ?
Das Listenelement für die Variable hat den Namen „ID“.
„objectID“: „$ID“ funktioniert nicht, auch „objectID“: $ID natürlich auch nicht.
Ziel ist es direkt in die Variable zu springen, entweder Objektbaum oder in die Eigenschaft (Variable bearbeiten)
Soweit ich weiß geht dies leider nicht. Du müsstest per Dynamik (=UpdateFormField) die neue ID jeweils beim Auswählen des Listen-Elements senden - aber es gibt aktuell in der Liste kein onClick für die Zeilen.
Da hat @paresy die Doku wohl nicht richtig gelesen Es gibt onClick in der Liste auf Spaltenebene. Wenn ihr da natürlich unabhängig von der Spalte immer das gleiche machen möchtet, dann könnt ihr einfach für jede Spalte das gleiche Skript eintragen.
Du hast in deiner Form eine Liste und einen OpenObjectButton (initial deaktiviert, da noch nichts in der Liste ausgewählt wurde, objectID kannst du beliebig setzen, z.B. 0). Für jede Spalte der Liste setzt du den gleichen onClick, sowas wie „PRE_GuiUpdateOpenObjectButton($id, $list[‚objectID‘]);“ In dieser Funktion setzt du dann via Dynamik die ObjektID des OpenObjectButtons auf den passenden Parameter und setzt ihn auf enabled (er könnte ja noch initial deaktivert sein). Das wäre zumindest mein Ansatz.
Ach, innerhalb des „Listenelement bearbeiten“-Dialogs? Dort ist keine Dynamik möglich. Offiziell funktioniert da noch nicht mal der OpenObjectButton (der Button übrigens auch nicht), siehe Doku von List. Der Dialog ist auch nicht dafür gedacht, dass dort irgendwelche Logik passiert. Wenn du da etwas eigenes machen möchtest, dann solltest du eher auf das onClick hin ein eigenes Popup öffnen. Dort kannst du dann deine Wünsche auch per Dynamik umsetzen.
Es mag sein, dass es aktuell funktioniert. Aber das ist undefiniertes und nicht vorgesehenes Verhalten. Verlasse dich also nicht darauf, dass das zukünftig auch so bleiben wird.
@Dr.Niels
Hallo Niels, habe jetzt den OpenObject Button ausserhalb der Liste erstell und deine Anweisungen oben befolgt. Vielen Dank für den Tip, das funktioniert als Workaround.
Schönen Feiertag !
Ich habe den Fall, das ich eine (readonly)-Liste (im Action-Bereich) eines Moduls habe, das die mit dieser Instanz diverse Objekte auflistet.
Und da wäre es natürlich schick, wenn ich dann betroffene Objekte (Instanzen, Ablaufpläne etc) aufrufen kann.
Natürlich könnte ich statt einer Liste zu nutzen, ein Formular dynamisch erzeugen, das dann alle Objekte auflistet mit einem OpenObjectButtom -Element für jedes Objekt erzeugt … aber so doll wäre das ja nicht.
Gibt es da eine Perspektive oder habt ihr noch eine andere Idee?
Ich weiß nicht 100% was Du machen willst, aber ich bastele auch gerade an einem sehr dynamischen Konfigurationsdialog in Verbindung mit Listen.
Ich habe es jetzt so gelöst das wenn eine Zeile in der Liste selektiert wird (grau) dann sende ich die Auswahl per IPS_RequestAction und machen Update auf „value“ usw. eines Buttons im Formular den man dann wieder drücken kann!
vielen Dank für den Tip.
Habe ich aufgegriffen, mache das nicht via RequestAction sondern per UpdateFormField. Da UpdateFormField ja keine globale IPs-Funktion ist musste ich dafür eine eigene winzige Wrapper-Funktion erstellen (bisschen tricky, seil es Bestandteile einer von mir global verwendeten Bibliothek ist).
Halt ein bisschen „durchs Knie ins Auge“, aber machbar.
Was mich bei so etwas etwas stört ist die Tatsache, das solche Funktionen dann auch im Script-Editor angeboten werden, eine Unterscheidung zu „echten“ public-Funktionen gibt es ja leider nicht