视图字段事件

图片.png

传给 onclick 的 JSON 属性速览

属性说明示例 / 用法
previousID先前选中记录的 ID。默认为 "A1"。“A1”
targetID被点击记录的 ID。默认为 "A3"。“A3”
targetLineNum用户点击的行号(从 0 开始)。3
targetColumnNum视图中被点击的列号(从 0 开始)。4
targetColumnValue被点击单元格中显示的文本值。“Lisa”
targetColumnCaption来自字段配置的列标题(取自 "caption" 或 "field.caption")。“First Name”

总体流程

  1. 在视图字段公式中定义 onclick 函数
    onclick 函数必须写入视图字段的公式中。它接收一个对象(名为 "event"),其中包含上述各项属性。
  2. 执行自定义代码
    当用户在视图中点击或轻触某个单元格时,Ninext 的钩子会执行 onclick 函数。脚本随后可以,例如:
    • 更新某条记录的属性(例如切换一个布尔字段)。
    • 把被点击记录的 ID 存入指定字段。
    • 根据被点击的列触发条件动作。
  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 存入字段 "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" 事件。