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

Краткий обзор свойств JSON, передаваемых в onclick
| Свойство | Описание | Пример / применение |
|---|---|---|
| previousID | Идентификатор ранее выбранной записи. По умолчанию «A1». | «A1» |
| targetID | Идентификатор записи, на которую пришёлся щелчок. По умолчанию «A3». | «A3» |
| targetLineNum | Номер строки, по которой щёлкнул пользователь (отсчёт с нуля). | 3 |
| targetColumnNum | Номер колонки представления, по которой пришёлся щелчок (отсчёт с нуля). | 4 |
| targetColumnValue | Текстовое значение, показанное в этой ячейке. | «Lisa» |
| targetColumnCaption | Заголовок колонки из настроек поля (берётся «caption» либо «field.caption»). | «First Name» |
Общий порядок работы
- Объявите функцию onclick в формуле поля-представления
Функция onclick должна быть встроена в формулу поля-представления. Она получает объект (с именем «event») со свойствами, описанными выше. - Выполнение собственного кода
Когда пользователь щёлкает или касается ячейки представления, перехватчик Ninext вызывает функцию onclick. Скрипт может, например:- изменить свойства записи (скажем, переключить логическое поле);
- сохранить идентификатор выбранной записи в отведённое поле;
- выполнить условные действия в зависимости от колонки, по которой щёлкнули.
- Возврат содержимого представления
В конце функции формула должна вернуть содержимое представления (например, «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».
