檢視欄位事件

image.png

傳給 onclick 的 JSON 屬性速覽

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