共用方式為


表單事件 (用戶端參考)

 

發行︰ 2017年1月

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

所有用戶端程式碼都是由事件啟始。 在 Microsoft Dynamics 365,您會關聯 JavaScript 程式庫內的特定函數,以便在發生特定事件時執行。

所有表單事件都有使用者介面,可用來指定一個或多個事件處理函式。 每個事件處理常式指定 JavaScript 程式庫內的單一函數,以及可以在傳遞至單一的所有參數。

活動

OnLoad 事件

OnSave 事件

欄位 OnChange 事件

索引標籤 TabStateChange 事件

IFRAME OnReadyStateComplete 事件

查詢控制項 PreSearch 事件

OnProcessStatusChange 事件

OnStageChange 事件

OnStageSelected 事件

知識庫搜尋控制項事件

唯讀的子格 OnLoad 事件

可編輯的網格事件

OnLoad 事件

在載入表單之後,發生 OnLoad 事件。 無法避免載入視窗。 使用 OnLoad 事件套用如何顯示表單的邏輯、設定欄位的屬性,以及與其他頁面元素互動。

當 平板電腦專用 Microsoft Dynamics 365 用戶端中斷連線時,OnLoad 事件是唯一發生的事件。

注意

在初次儲存建立記錄或往後的儲存之後,針對的 更新的實體 表單不會重新載入頁面。 因此,OnLoad 事件只會在初次載入表單時發生。

OnSave 事件

OnSave 事件發生時機:

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

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

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

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

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

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

若要決定按一下哪個按鈕執行儲存,請使用 getSaveMode 方法。

使用在事件引數物件中的 preventDefault 的方法,可以取消儲存動作。 使用 getEventArgs 方法 (執行內容的一部分) 可存取的 preventDefault 方法。 您必須將表單事件處理常式設定為傳遞執行內容。 如需詳細資訊,請參閱使用執行內容和表單事件準銷售案源

欄位 OnChange 事件

當表單欄位的資料變更,並遺失焦點時,OnChange 事件通常就會發生。

注意

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

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

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

如果此欄位以程式設計方式使用 setValue 方法而變更,OnChange 事件不會進行。 如果您要 OnChange 事件的事件處理常式在您設定值之後執行,您必須在程式碼中使用 Xrm.Page.data.entity 屬性 fireOnChange 方法。

所有欄位都支援 OnChange 事件。 在 OnChange 事件前後,欄位中的資料已驗證。

注意

雖然 Status 欄位支援 OnChange 事件,但欄位在表單上是唯讀的,因此事件無法透過使用者互動發生。 使用該欄位的 fireOnChange 方法,其他指令碼可讓此事件發生。

索引標籤 TabStateChange 事件

當索引標籤的 DisplayState 因為使用者互動變更,或是 setDisplayState 方法在程式碼中會套用時,TabStateChange 事件就會發生。 當您要在索引標籤中變更 IFRAME 的 src 屬性,使用此事件。

注意

Dynamics 365 行動用戶端 (行動電話和平板電腦) 不支援此事件,因為索引標籤未展開或摺疊。

如同在 Dynamics 365 行動用戶端中,索引標籤不會在互動式服務中心內展開或摺疊,但 TabStateChange 事件會在使用者於互動式服務中心內從某個索引標籤移至另一個索引標籤時發生。

如果您 針對已摺疊的索引標籤中的 IFRAME,設定 OnLoad 事件的 IFrame src 屬性,當索引標籤展開時,值會被覆寫。

IFRAME OnReadyStateComplete 事件

OnReadyStateComplete 事件表示 IFRAME 的內容已載入,可以在程式碼中存取。 當您在指令碼中參考 IFRAME 控制項時,使用此事件。

注意

行動電話用 Dynamics 365 和互動式服務中心不支援此事件。

查詢控制項 PreSearch 事件

查詢控制項有事件,會在 PreSearch 控制項啟動對話方塊以搜尋記錄之前發生。 沒有可設定此事件之事件處理常式的 UI。 您必須在查詢控制項上使用 addPreSearchremovePreSearch 方法,新增或移除此事件的事件處理常式。

在查詢控制項顯示搜尋結果供使用者選擇之前,請使用此事件與其他 查詢控制項方法及事件,根據表單資料來變更查詢顯示結果。

OnProcessStatusChange 事件

此事件會在程序執行個體的狀態變更時發生。 使用 Xrm.Page.data.process.addOnProcessStatusChange 方法,新增此事件的事件處理常式,使用 Xrm.Page.data.process.removeOnProcessStatusChange 方法移除它們。其他資訊:為商務程序流程撰寫指令碼

注意

此事件已在 Dynamics 365 (Online 和內部部署) 的 2016 年 12 月更新 中引進。

OnStageChange 事件

商務程序流程控制項的階段不同時,此事件發生。 當使用者按一下使用者介面的 [下一個階段] 或 [移至上一個階段] 按鈕,或是開發人員使用 Xrm.Page.data.process.moveNextXrm.Page.data.process.movePrevious方法時,此事件發生。 您無法在此事件的處理常式中使用程式碼,取消階段變更。

執行內容物件會傳遞給此事件的事件處理常式。 您可以使用 getEventArgs 函數擷取有下列方法的物件:

  • getDirection
    傳回是「next」或「previous」的字串,顯示階段變更方向。

  • getStage
    傳回階段物件。 除了導覽移至新的實體時,傳回的階段代表目的地階段物件,也就是下一個使用中的階段。 當導覽移至新的實體時,階段是導覽的來源階段,也就是上一個使用中的階段物件。其他資訊:階段方法

使用 Xrm.Page.data.process.addOnStageChange 方法,新增此事件的事件處理常式,使用 Xrm.Page.data.process.removeOnStageChange 方法移除它們。其他資訊:為商務程序流程撰寫指令碼

OnStageSelected 事件

選取商務程序流程控制項的階段時,此事件發生。 您無法在此事件的處理常式中使用程式碼,取消階段選取。

執行內容物件會傳遞給此事件的事件處理常式。 您可以使用 getEventArgs 函數擷取有下列方法的物件:

  • getStage
    傳回階段物件,代表選取的階段。其他資訊:階段方法

使用 Xrm.Page.data.process.addOnStageSelected 方法,新增此事件的事件處理常式,使用 Xrm.Page.data.process.removeOnStageSelected 方法移除它們。其他資訊:為商務程序流程撰寫指令碼

知識庫搜尋控制項事件

只能將知識庫搜尋控制項新增至已啟用知識管理功能之組織的表單。 此控制項有兩個事件 (OnResultOpenedOnSelection),開發人員可用程式設計的方式指派其事件處理常式。其他資訊:知識庫搜尋控制項 (用戶端參考)

唯讀的子格 OnLoad 事件

將事件處理常式附加至子格的 OnLoad 事件。其他資訊:撰寫子格的指令碼

可編輯的網格事件

將事件處理常式附加至可編輯的網格事件。其他資訊:可編輯的 Grid 物件和方法 (用戶端參考)

另請參閱

表單指令碼快速參考
撰寫 Microsoft Dynamics 365 表單的程式碼
使用 Xrm.Page 物件模型
用戶端程式設計參考
為商務程序流程撰寫指令碼

Microsoft Dynamics 365

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