Ereignis im Ansichtsfeld

Kurzüberblick über die an onclick übergebenen JSON-Eigenschaften
| Eigenschaft | Beschreibung | Beispiel / Verwendung |
|---|---|---|
| previousID | Die ID des zuvor ausgewählten Datensatzes. Vorgabe ist "A1". | „A1“ |
| targetID | Die ID des durch den Klick angesteuerten Datensatzes. Vorgabe ist "A3". | „A3“ |
| targetLineNum | Die Nummer der angeklickten Zeile (beginnend bei null). | 3 |
| targetColumnNum | Die Nummer der in der Ansicht angeklickten Spalte (beginnend bei null). | 4 |
| targetColumnValue | Der in der angeklickten Zelle angezeigte Textwert. | „Lisa“ |
| targetColumnCaption | Die Spaltenbeschriftung aus der Feldkonfiguration (entweder "caption" oder "field.caption"). | „First Name“ |
Allgemeiner Ablauf
- Die Funktion onclick in der Formel des Ansichtsfeldes definieren
Die Funktion onclick muss in die Formel des Ansichtsfeldes eingebaut werden. Sie erhält ein Objekt (namens "event") mit den oben beschriebenen Eigenschaften. - Eigenen Code ausführen
Klickt oder tippt ein Benutzer auf eine Zelle der Ansicht, so führt der Hook von Ninext die Funktion onclick aus. Das Skript kann dann zum Beispiel:- Eigenschaften eines Datensatzes ändern (etwa ein boolesches Feld umschalten).
- Die ID des angeklickten Datensatzes in ein dafür vorgesehenes Feld schreiben.
- Je nach angeklickter Spalte bedingte Aktionen auslösen.
- Den Inhalt der Ansicht zurückgeben
Am Ende der Funktion muss die Formel den Inhalt der Ansicht zurückgeben (zum Beispiel "select Customer"). Damit erfährt Ninox, welche Datensätze nach der Ausführung des Skripts anzuzeigen sind.
Umsetzungsbeispiele
Vollständiges Beispiel
function onclick(event : any) do
"ID of selected customer := event.targetID";
var t := this;
var selCustomer := first(select Customer where Id = event.targetID);
debug("onclick");
if event.targetColumnCaption like "checked" then
selCustomer.(Checked := not Checked);
true
else
if event.targetColumnNum = 0 then
true
else
false
end
end
end;
select Customer
Anmerkungen:
- Die Funktion schreibt zunächst die ID des angeklickten Datensatzes in das Feld "ID of selected customer".
- Anschließend holt sie den zugehörigen Datensatz aus der Tabelle "Customer".
- Enthält die Spaltenbeschriftung der angeklickten Zelle "checked", so schaltet sie das Feld "Checked" dieses Datensatzes um und gibt true zurück, um anzuzeigen, dass der Klick behandelt wurde.
- Andernfalls gibt die Funktion true oder false zurück, je nachdem, ob die Nummer der angeklickten Spalte 0 ist.
- Zuletzt gibt die Formel "select Customer" zurück, wodurch nach der Ausführung des Skripts der Inhalt der Ansicht erscheint.
Minimalbeispiel
function onclick(event : any) do
"ID of selected customer := event.targetID";
debug("Clicked on Customer " + event.targetID);
"No specific action is performed here.";
false
end;
select Customer
Anmerkungen:
- Dieses Skript schreibt lediglich die ID des angeklickten Datensatzes und gibt eine Debug-Meldung aus.
- Die Rückgabe von false lässt das Standardverhalten für alle nicht eigens behandelten Aktionen zu.
- Wie immer endet die Formel mit "select Customer", um den Inhalt der Ansicht anzuzeigen.
Das sollten Sie sich merken
- Platzierung in der Formel des Ansichtsfeldes:
Die Funktion onclick muss unmittelbar in der Formel des Ansichtsfeldes stehen, nicht in einem Trigger oder an anderer Stelle der Anwendung. - Rückgabe des Ansichtsinhalts:
Anders als bei Funktionen, die einen booleschen Wert erwarten, muss die letzte Zeile der Formel den Inhalt der Ansicht zurückgeben (z. B. "select Customer"). - Nutzung der Ereignisparameter:
Verwenden Sie die Angaben aus dem Objekt "event" (previousID, targetID, targetLineNum, targetColumnNum, targetColumnValue, targetColumnCaption), um Ihre Aktionen auf den Klickzusammenhang abzustimmen. - Test auf verschiedenen Geräten:
Vergewissern Sie sich, dass die Funktion sowohl auf Desktop-Rechnern als auch auf Touch-Geräten richtig arbeitet, denn der Hook behandelt sowohl das Ereignis "click" als auch "touchend".
