檢視欄位事件

傳給 onclick 的 JSON 屬性速覽
| 屬性 | 說明 | 範例/用法 |
|---|---|---|
| previousID | 先前選取記錄的 ID。預設為 "A1"。 | 「A1」 |
| targetID | 被點選之記錄的 ID。預設為 "A3"。 | 「A3」 |
| targetLineNum | 使用者所點選的列號(從零開始)。 | 3 |
| targetColumnNum | 檢視中被點選的欄號(從零開始)。 | 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」事件。
