使用表單和欄位事件
發佈日期: 2017年1月
適用對象: Dynamics 365 (online)、Dynamics 365 (on-premises)、Dynamics CRM 2016、Dynamics CRM Online
您可以為 OnLoad 和 OnSave 新增表單事件指令碼和 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 事件。
OnReadyStateComplete 事件
任何與 IFRAME 互動的指令碼將會失敗,除非 IFRAME 的內容已完成載入。 此事件提供位置來包括在 IFRAME 的內容完成載入時執行的指令碼。
其他資訊:IFRAME OnReadyStateComplete 事件
PreSearch 事件
使用 addPreSearch 方法新增事件處理常式至查詢屬性的控制項。 沒有使用者介面可用於手動新增事件處理常式。 當使用者搜尋一筆紀錄以設定為查詢欄位的值,使用此事件搭配 addCustomFilter、addCustomView 和 setDefaultView 方法來控制檢視表開啟。
其他資訊:查詢控制項 PreSearch 事件
商務程序流程控制項事件
Microsoft Dynamics 365 (線上和內部部署) 為商務程序流程控制項的使用者互動提供三個事件。
OnStageChange
當變更階段時發生。其他資訊:OnStageChange 事件。OnStageSelected
當選取階段時發生。其他資訊:OnStageSelected 事件。OnProcessStatusChange
程序執行個體狀態變更時發生。其他資訊:OnProcessStatusChange 事件。
沒有 UI 可註冊這些事件的指令碼。 在已於表單 OnLoad 事件註冊的函數中使用下列方法,註冊您要用於這些事件的函數。
Xrm.Page.data.process.addOnStageChange
Xrm.Page.data.process.addOnStageSelected
Xrm.Page.data.process.removeOnStageChange
Xrm.Page.data.process.removeOnStageSelected
Xrm.Page.data.process.addOnProcessStatusChange
Xrm.Page.data.process.removeOnProcessStatusChange
這些方法都可以接受函數做為參數,從事件處理常式新增或移除。其他資訊:管理事件處理常式的方法。
另請參閱
撰寫 Microsoft Dynamics 365 表單的程式碼
使用 Xrm.Page 物件模型
表單指令碼快速參考
使用 JavaScript 搭配 Microsoft Dynamics 365
用戶端程式設計參考
表單事件 (用戶端參考)
<events> (FormXml)
Microsoft Dynamics 365
© 2017 Microsoft. 著作權所有,並保留一切權利。 著作權