使用表單和欄位事件

 

發行︰ 2017年1月

適用於: Dynamics 365 (online)、Dynamics 365 (on-premises)、Dynamics CRM 2016、Dynamics CRM Online

您可以為 OnLoadOnSave 新增表單事件指令碼和 OnChange 每個欄位的事件。 索引標籤有一個 TabStateChange 事件,且 IFRAME 有 OnReadyStateComplete 事件。PreSearch 事件和商務程序流程控制項所引發之事件的處理常式,只能透過個別控制項的方法新增與移除。

注意

在表單中的事件針對大量編輯表單停用。 大量編輯表單在清單中的多筆紀錄受到編輯時顯示。

本主題內容

OnLoad 事件

OnSave 事件

OnChange 事件

TabStateChange 事件

OnReadyStateComplete 事件

PreSearch 事件

商務程序流程控制項事件

OnLoad 事件

在載入表單之後,發生 OnLoad 事件。 無法避免載入視窗。 使用 OnLoad 事件來準備使用表單中的資料。 可使用 OnLoad 事件執行的動作包括以下:

  • 基於變更值來執行計算。

  • 警告使用者發生狀況。

  • 停用不應更新的欄位。

其他資訊:OnLoad 事件

OnSave 事件

OnSave 事件無法對應至標準 HTML OnSubmit 事件。OnSave 事件發生時機:

  • 使用者按一下表單右下方的 自動儲存按鈕 按鈕,即使沒有需要儲存的變更資料。

  • 即使沒有變更需要儲存,程式碼仍會執行 Xrm.Page.data.entity.儲存​​ 方法。

  • 使用者離開表單,表單該處有未儲存的資料。

  • 如果啟動了自動儲存功能,在資料變更後的三十秒以及表單內有位儲存的資料時。

  • 程式碼執行 Xrm.Page.data.儲存​​ 方法,且表單內有位儲存的資料。

  • 程式碼執行 Xrm.Page.data.重新整理 方法,傳送 true 值做為第一個參數,且表單內有未儲存的資料。

您可以透過在取自 getSaveMode 方法執行內容的儲存事件引數中使用 getEventArgs 方法偵測執行了哪一個動作來儲存表單。 在包含未儲存資料對應至「儲存並關閉」行為 (在未更新的實體表單中發現) 時離開表單。

OnSave 事件可取消以避免儲存資料。 因為如此,使用 OnSave 事件來驗證資料是一個很平常的動作。

其他資訊:OnSave 事件

OnChange 事件

OnChange 事件在每個欄位都可使用。 一般而言,OnChange 事件需要兩個條件才能成立:

  • 欄位中的資料必須變更。

  • 欄位必須遺失焦點。

注意

此行為有一個例外,且會套用依格式使用選項按鈕或核取方塊的兩個選項 (Boolean) 的欄位。 對於這些控制項,事件立即發生。

當擷取伺服器上的資料變更,以在重新整理表單時更新欄位 (例如,當記錄儲存之後),也會發生此事件。

使用 Xrm.Page.data.entity 屬性 fireOnChange 方法也會導致此事件發生。

如果此欄位依照程式設計使用 setValue 方法而變更,OnChange 事件不會進行。 如果您要 OnChange 事件的事件常數在您設定值之後執行,您必須在程式碼中使用 fireOnChange 方法。

在事件之後將會驗證該欄位中的資料。 這表示您無法使用事件輸入無效資料。

可使用 OnChange 執行的動作包括以下:

  • 依據變更的值執行計算,變更其他欄位。

  • 變更欄位格式,例如電話號碼。

其他資訊:欄位 OnChange 事件

TabStateChange 事件

此事件發生於展開或摺疊索引標籤時。 您可能會想要延遲程式碼的執行直到索引標籤展開。

注意

此事件不會在 平板電腦專用 Microsoft Dynamics 365 中進行,因為該用戶端中的索引標籤無法折疊。

如果您使用指令碼修改 IFrame 控制項的 src 屬性,此事件是很重要的。 IFRAME 會在索引標籤展開時重新整理。 任何發生於 src 屬性的變更將會移除。 當您與 IFRAME 的 src 屬性互動時,您應該在 TabStateChange 事件中包括此程式碼,而非 Onload 事件。

其他資訊:索引標籤 TabStateChange 事件

OnReadyStateComplete 事件

任何與 IFRAME 互動的指令碼將會失敗,除非 IFRAME 的內容已完成載入。 此事件提供位置來包括在 IFRAME 的內容完成載入時執行的指令碼。

其他資訊:IFRAME OnReadyStateComplete 事件

PreSearch 事件

使用 addPreSearch 方法新增事件處理常式至查詢屬性的控制項。 沒有使用者介面可用於手動新增事件處理常式。 當使用者搜尋一筆紀錄以設定為查詢欄位的值,使用此事件搭配 addCustomFilteraddCustomViewsetDefaultView 方法來控制檢視表開啟。

其他資訊:查詢控制項 PreSearch 事件

商務程序流程控制項事件

Microsoft Dynamics 365 (線上和內部部署) 為商務程序流程控制項的使用者互動提供三個事件。

沒有 UI 可註冊這些事件的指令碼。 在已於表單 OnLoad 事件註冊的函數中使用下列方法,註冊您要用於這些事件的函數。

這些方法都可以接受函數做為參數,從事件處理常式新增或移除。其他資訊:管理事件處理常式的方法

另請參閱

撰寫 Microsoft Dynamics 365 表單的程式碼
使用 Xrm.Page 物件模型
表單指令碼快速參考
使用 JavaScript 搭配 Microsoft Dynamics 365
用戶端程式設計參考
表單事件 (用戶端參考)
<events> (FormXml)

Microsoft Dynamics 365

© 2017 Microsoft. 著作權所有,並保留一切權利。 著作權