Datenübergabe bei "onClick" aus einer Liste

Ich habe in einem Modul ein List-Element, bei dem ich mit onClick eine Funktion aufrufe.

Das ist soweit kein Problem, mein Problem ist die Frage, wie ich die ganze aktuelle Zeile der Liste übergeben kann.

In der Doku ( List — IP-Symcon :: Automatisierungssoftware) steht folgendes:

In der Definition des Konfigurationsformulares können die Werte der Tabelle als Variable $Name verwendet werden. Auf das Objekt kann wie auf ein Array zugegriffen werden. Wird auf das entsprechende Objekt mit einem String-Index zugegriffen, so wird der entsprechende Wert wie in values definiert der ausgewählten Zeile zurückgegeben. Wird mit einem numerischen Index zugegriffen oder das Objekt iteriert, so wird die entsprechende Zeile zurückgegeben, deren einzelne Parameter widerum per String-Index referenziert werden können.

Die Liste hat die Spalte (als Bsp) „id“, „ident“, „name“ …

Das übergibt die „id“ der aktuellen Zeile - ok

'onClick' => 'IPS_RequestAction($id, "UpdateFormField", json_encode(["field" => "openObject_FileList", "param" => "objectID", "value" => $FileList["id"]]));';

Das übergibt die ganze Zeile, aber immer nur die erst (Index 0)

'onClick' => 'IPS_RequestAction($id, "UpdateFormField", json_encode(["field" => "openObject_FileList", "param" => "objectID", "value" => $FileList[0]]));';

Möchte ich alle Elemente der Zeile übergeben, muss ich die alle einzeln aufführen

'onClick' => 'IPS_RequestAction($id, "UpdateFormField_FileList", json_encode(["id" => $FileList["id"], "ident" => $FileList["ident"], "name" => $FileList["name"]]));';

Das geht zwar, finde ich aber nicht wirklich elegant. Gibt es eine andere Lösung, die Zeile komplett zu übergeben (also wie $FileList[0] aber die aktuelle Zeile? Ich verstehe auch den Satz oder das Objekt iteriert, aus der o.g. Beschreibung leider nicht.

Wir haben hier darüber auch philisophiert, ob oder wie das gehen könnte - bisher aber keine Lösung gefunden. Ich glaube aktuell musst du tatsächlich alle Felder manuell nennen.

paresy

Ich hatte gestern noch etwas herumgespielt und interessanterweise hat das funktioniert:

$onClick_FileList = 'IPS_RequestAction($id, "UpdateFormField_FileList", json_encode($FileList));';

Unerwarteter Nebeneffekt, den ich besser nicht nutzen sollte?

Wenn es funktioniert - nutz es gerne. Ich denke nicht, dass wir die Funktionisweise ändern werden. Ich hätte jetzt aus dem Bauch heraus erwartet, dass die ganze Liste serialisiert worden wäre :slight_smile: @Dr.Niels Sollten wir dieses Verhalten irgendwie dokumentieren, sodass es „fest“ ist?

paresy

2 „Gefällt mir“