Zdarzenie pola widoku

Ninext dodaje zdarzenia do widoków Ninox: kliknięcie wiersza pola widoku (onclick) i wybranie rekordu w widoku tabeli (onselected). W formułach funkcje te zapisuje się dokładnie w ten sposób, małymi literami.
Te zdarzenia wyłącza się w panelu Ustawienia Ninext, w sekcji „Ulepszenia interfejsu”: Zdarzenia widoku (onClick, onSelect) (domyślnie włączone).
Kliknięcie wiersza pola widoku: onclick
Krótki przegląd właściwości JSON przekazywanych do onclick
| Właściwość | Opis | Przykład / zastosowanie |
|---|---|---|
| previousID | Identyfikator rekordu wybranego w widoku przed kliknięciem; pusty, jeśli żadnego nie było. | „A1” |
| targetID | Identyfikator rekordu wskazanego kliknięciem. | „A3” |
| targetLineNum | Numer wiersza, w który kliknął użytkownik (liczony od zera). | 3 |
| targetColumnNum | Numer klikniętej kolumny w widoku (liczony od zera). | 4 |
| targetColumnValue | Wartość tekstowa wyświetlana w klikniętej komórce. | „Lisa” |
| targetColumnCaption | Nagłówek kolumny z konfiguracji pola (z "caption" albo "field.caption"). | „First Name” |
Ogólny przebieg pracy
- Zdefiniuj funkcję onclick w formule pola widoku
Funkcja onclick musi zostać umieszczona w formule pola widoku. Otrzymuje ona obiekt (o nazwie "event") zawierający właściwości opisane powyżej. W tej funkcjithiswskazuje rekord, który zawiera pole widoku, a nie kliknięty wiersz: ten ostatni odnajduje się przezevent.targetID. - Wykonanie własnego kodu
Gdy użytkownik kliknie lub dotknie komórkę w widoku, mechanizm Ninext wykonuje funkcję onclick. Skrypt może wtedy na przykład:- Zaktualizować właściwości rekordu (np. przełączyć pole logiczne).
- Zapisać identyfikator klikniętego rekordu do wskazanego pola.
- Uruchomić działania warunkowe zależne od klikniętej kolumny.
- Zwrócenie zawartości widoku
Na końcu funkcji formuła musi zwrócić zawartość widoku (na przykład "select Customer"). To mówi Ninox, które rekordy wyświetlić po wykonaniu skryptu.
Przykłady zastosowania
Pełny przykład
function onclick(event : any) do
'ID of selected customer' := event.targetID;
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 CustomerKomentarze:
- Funkcja zaczyna od zapisania identyfikatora klikniętego rekordu w polu "ID of selected customer".
- Następnie pobiera odpowiedni rekord z tabeli "Customer".
- Jeśli nagłówek klikniętej kolumny zawiera "checked", przełącza pole "Checked" w tym rekordzie i zwraca true, sygnalizując, że kliknięcie zostało obsłużone.
- W przeciwnym razie funkcja zwraca true lub false w zależności od tego, czy numer klikniętej kolumny wynosi 0.
- Na koniec formuła zwraca "select Customer", co wyświetla zawartość widoku po wykonaniu skryptu.
Przykład minimalny
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 CustomerKomentarze:
- Skrypt po prostu zapisuje identyfikator klikniętego rekordu i wypisuje komunikat debugowania.
- Zwrócenie false pozwala zachować domyślne zachowanie dla działań, które nie są obsłużone w szczególny sposób.
- Jak zawsze formuła kończy się na "select Customer", aby wyświetlić zawartość widoku.
Najważniejsze do zapamiętania
- Umiejscowienie w formule pola widoku:
Funkcja onclick musi być zdefiniowana bezpośrednio w formule pola widoku, a nie w wyzwalaczu czy innej części aplikacji. - Zwracanie zawartości widoku:
W odróżnieniu od innych funkcji, które oczekują wartości logicznej, ostatni wiersz formuły musi zwrócić zawartość widoku (np. "select Customer"). - Wartość zwracana przez onclick:
truesygnalizuje, że kliknięcie zostało obsłużone: Ninox nie otwiera klikniętego rekordu.falselub brak wartości pozwala Ninox zastosować zwykłe zachowanie i otworzyć rekord. Kliknięcie wiersza grupowania nie wywołuje onclick. - Funkcja obliczana osobno:
Ninext wyodrębnia z formuły samą funkcję onclick, a następnie oblicza ją osobno. Nie widzi ona więc ani zmiennych, ani innych funkcji zadeklarowanych w innym miejscu formuły: wszystko, czego potrzebuje, należy zadeklarować wewnątrz onclick. - Wykorzystanie parametrów zdarzenia:
Informacje z obiektu "event" (previousID, targetID, targetLineNum, targetColumnNum, targetColumnValue, targetColumnCaption) pozwalają dostosować działania do kontekstu kliknięcia. - Testowanie na różnych urządzeniach:
Proszę upewnić się, że funkcja działa poprawnie zarówno na komputerach, jak i na urządzeniach dotykowych, ponieważ mechanizm obsługuje zdarzenia "click" i "touchend".
Wybranie rekordu w widoku tabeli: onselected
Ninext wywołuje funkcję onselected() za każdym razem, gdy w widoku tabeli (liście rekordów tabeli) zostanie wybrany wiersz. Należy ją zadeklarować, bez parametru, w formule prawa odczytu tabeli („Readable if”). W tej funkcji this wskazuje wybrany rekord. Zwracana przez nią wartość nie jest wykorzystywana, a Ninox otwiera rekord jak zwykle.
function onselected() do
debug("customer->onselect : " + this)
end;
trueTutaj każde wybranie zapisuje w karcie Śledzenie debugowania, przy otwartym panelu Ninext, wiersz podsumowujący wybrany rekord.
Formuła zachowuje swoją rolę: to jej ostatnią wartość Ninox wykorzystuje, aby zdecydować, kto może odczytywać tabelę. Należy ją więc zakończyć zwykłym warunkiem odczytu; true, jak tutaj, nie zmienia niczego w prawie odczytu tabeli otwartej dla wszystkich. Podobnie jak onclick, funkcja jest wyodrębniana z formuły osobno.
