Событие поля-представления

image.png

Краткий обзор свойств JSON, передаваемых в onclick

СвойствоОписаниеПример / применение
previousIDИдентификатор ранее выбранной записи. По умолчанию «A1».«A1»
targetIDИдентификатор записи, на которую пришёлся щелчок. По умолчанию «A3».«A3»
targetLineNumНомер строки, по которой щёлкнул пользователь (отсчёт с нуля).3
targetColumnNumНомер колонки представления, по которой пришёлся щелчок (отсчёт с нуля).4
targetColumnValueТекстовое значение, показанное в этой ячейке.«Lisa»
targetColumnCaptionЗаголовок колонки из настроек поля (берётся «caption» либо «field.caption»).«First Name»

Общий порядок работы

  1. Объявите функцию onclick в формуле поля-представления
    Функция onclick должна быть встроена в формулу поля-представления. Она получает объект (с именем «event») со свойствами, описанными выше.
  2. Выполнение собственного кода
    Когда пользователь щёлкает или касается ячейки представления, перехватчик Ninext вызывает функцию onclick. Скрипт может, например:
    • изменить свойства записи (скажем, переключить логическое поле);
    • сохранить идентификатор выбранной записи в отведённое поле;
    • выполнить условные действия в зависимости от колонки, по которой щёлкнули.
  3. Возврат содержимого представления
    В конце функции формула должна вернуть содержимое представления (например, «select Customer»). Так Ninox узнаёт, какие записи показать после выполнения скрипта.

Примеры реализации

Полный пример

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

Пояснения:

  • Функция начинает с того, что сохраняет идентификатор выбранной записи в поле «ID of selected customer».
  • Затем она получает соответствующую запись из таблицы «Customer».
  • Если заголовок колонки, по которой щёлкнули, содержит «checked», она переключает поле «Checked» этой записи и возвращает true, показывая, что щелчок обработан.
  • Иначе функция возвращает true или false в зависимости от того, равен ли номер колонки 0.
  • Наконец, формула возвращает «select Customer», что и выводит содержимое представления после выполнения скрипта.

Минимальный пример

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

Пояснения:

  • Этот скрипт просто сохраняет идентификатор выбранной записи и выводит отладочное сообщение.
  • Возврат false позволяет отработать поведению по умолчанию для действий, которые особым образом не обрабатываются.
  • Как всегда, формула завершается «select Customer», чтобы вывести содержимое представления.

Что важно помнить

  • Место в формуле поля-представления:
    Функцию onclick нужно объявлять прямо в формуле поля-представления, а не в триггере или другой части приложения.
  • Возврат содержимого представления:
    В отличие от других функций, ожидающих логическое значение, последняя строка формулы должна возвращать содержимое представления (например, «select Customer»).
  • Использование параметров события:
    Пользуйтесь сведениями из объекта «event» (previousID, targetID, targetLineNum, targetColumnNum, targetColumnValue, targetColumnCaption), чтобы подстраивать действия под контекст щелчка.
  • Проверка на разных устройствах:
    Убедитесь, что функция правильно работает и на настольных компьютерах, и на сенсорных устройствах, поскольку перехватчик обрабатывает как событие «click», так и «touchend».