视图字段事件

传给 onclick 的 JSON 属性速览
| 属性 | 说明 | 示例 / 用法 |
|---|---|---|
| previousID | 先前选中记录的 ID。默认为 "A1"。 | “A1” |
| targetID | 被点击记录的 ID。默认为 "A3"。 | “A3” |
| targetLineNum | 用户点击的行号(从 0 开始)。 | 3 |
| targetColumnNum | 视图中被点击的列号(从 0 开始)。 | 4 |
| targetColumnValue | 被点击单元格中显示的文本值。 | “Lisa” |
| targetColumnCaption | 来自字段配置的列标题(取自 "caption" 或 "field.caption")。 | “First Name” |
总体流程
- 在视图字段公式中定义 onclick 函数
onclick 函数必须写入视图字段的公式中。它接收一个对象(名为 "event"),其中包含上述各项属性。 - 执行自定义代码
当用户在视图中点击或轻触某个单元格时,Ninext 的钩子会执行 onclick 函数。脚本随后可以,例如:- 更新某条记录的属性(例如切换一个布尔字段)。
- 把被点击记录的 ID 存入指定字段。
- 根据被点击的列触发条件动作。
- 返回视图内容
函数末尾,公式必须返回视图的内容(例如 "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 存入字段 "ID of selected customer"。
- 然后从 "Customer" 表中取出相应的记录。
- 如果被点击单元格的列标题包含 "checked",则切换该记录上的 "Checked" 字段,并返回 true 表示该点击已被处理。
- 否则,函数根据被点击的列号是否为 0 返回 true 或 false。
- 最后,公式返回 "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
说明:
- 这段脚本只是存下被点击记录的 ID,并记录一条调试信息。
- 返回 false 会让未被专门处理的动作按默认行为继续进行。
- 与往常一样,公式以 "select Customer" 结尾,以显示视图的内容。
需要记住的要点
- 在视图字段公式中的位置:
onclick 函数必须直接定义在视图字段的公式中,而不是在触发器或应用的其他部分。 - 返回视图内容:
与其他期望返回布尔值的函数不同,公式的最后一行必须返回视图的内容(例如 "select Customer")。 - 利用事件参数:
利用 "event" 对象提供的信息(previousID、targetID、targetLineNum、targetColumnNum、targetColumnValue、targetColumnCaption),根据点击的上下文来调整您的动作。 - 在不同设备上测试:
请确保该函数在桌面设备和触摸设备上都能正常工作,因为该钩子同时处理 "click" 和 "touchend" 事件。
