フォームおよびフィールド イベントの使用
公開日: 2017年1月
対象: Dynamics 365 (online)、Dynamics 365 (on-premises)、Dynamics CRM 2016、Dynamics CRM Online
フォームの OnLoad イベントと OnSave イベント、および各フィールドの OnChange イベント用のスクリプトを追加できます。 タブには TabStateChange イベントが、IFRAMES には OnReadyStateComplete イベントがあります。PreSearch イベントまたは業務プロセス フローのコントロールによって発生されたイベントのハンドラーは、対応するコントロールのメソッドを使用場合にのみ追加および削除できます。
注意
フォームのイベントは、一括編集フォームでは無効です。 一括編集フォームは、リスト内の複数のレコードを編集するときに表示されます。
このトピックの内容
OnLoad イベント
OnSave イベント
OnChange イベント
TabStateChange イベント
OnReadyStateComplete イベント
PreSearch イベント
業務プロセス フローのコントロール イベント
OnLoad イベント
OnLoad イベントは、フォームが読み込まれた後に発生します。 このイベントを使用して、フォームの読み込みを禁止することはできません。OnLoad イベントを使用して、フォームで使用するデータを準備します。OnLoad イベントを使用して、以下のような操作を実行できます。
変更値に基づいた計算を実行します。
ユーザーに警告を表示します。
更新対象外のフィールドを無効化します。
詳細:OnLoad イベント
OnSave イベント
OnSave イベントは、標準 HTML の OnSubmit イベントに対応していません。OnSave イベントは、次のタイミングで発生します。
保存する変更済みデータがない時でも、ユーザーがフォームの右下隅の ボタンをクリックする。
保存する変更済みデータがない場合でも、コードが Xrm.Page.data.entity.上書き保存 メソッドを実行する。
ユーザーがフォームから移動し、フォームに保存されていないデータがある。
オートセーブが有効で、データ変更の 30 秒後にフォームに保存されていないデータがある。
コードが Xrm.Page.data.上書き保存 メソッドを実行し、フォームに保存されていないデータがある。
コードが Xrm.Page.data.refresh メソッドを実行して true 値を最初のパラメーターとして渡し、フォームに保存されていないデータがある。
getEventArgs メソッドの実行コンテキストから取得される save イベントの引数内で getSaveMode メソッドを使用することで、フォームの保存時に実行されたアクションを検出できます。 保存されていないデータを含むときにフォームから移動することは、更新されていないエンティティのフォームにおける「保存して閉じる」の動作に対応します。
OnSave イベントを取り消すと、データが保存されるのを避けることができます。 このため、データの検証時には OnSave イベントが頻繁に使用されます。
詳細:OnSave イベント
OnChange イベント
OnChange イベントは、すべてのフィールドで実行可能です。 通常、OnChange イベントでは次の 2 つの状況を満たす必要があります。
フィールド内のデータを変更する必要があること。
フィールドにカーソルが置かれていないこと。
注意
ラジオ ボタンまたはチェック ボックスを使用するように設定される、2 つのオプション (ブール値) に適用される、この動作の例外があります。 これらのコントロールのイベントは、ただちに実行されます。
また、このイベントは、レコードの保存後などの、サーバー上のデータ変更が取得されて、フォームのリフレッシュ時にフィールドが更新されるときにも発生します。
Xrm.Page.data.entity属性を使用します。fireOnChange メソッドでもこのイベントが発生します。
OnChange イベントは、setValue メソッドを使用してプログラム的にフィールドが変更される場合も発生しません。 値を設定したあとに OnChange イベントのイベント ハンドラーを実行したい場合、コードで fireOnChange メソッドを使用する必要があります。
イベントの後、フィールド内のデータは再検証されます。 これは、このイベントでは無効なデータを入力できないことを意味します。
OnChange を使用して、以下のような操作を実行できます。
計算を実行して、他のフィールドを変更値に基づいて変更します。
電話番号など、フィールドの書式を変更します。
TabStateChange イベント
このイベントは、タブが展開されたとき、または閉じられたときに発生します。 タブが展開されるまでコードの実行を遅らせる必要があることがあります。
注意
クライアントのタブが閉じられないため、このイベントは タブレット PC 用 Microsoft Dynamics 365 では発生しません。
このイベントは、スクリプトを使用して IFRAME コントロールの src プロパティを変更する場合は重要です。 IFRAME は、タブが展開されているときに更新されます。src プロパティに対する変更はすべて削除されます。 IFRAME の src プロパティとやり取りするときは、常に TabStateChange イベントではなく Onload イベント内にこのコードを含める必要があります。
OnReadyStateComplete イベント
IFRAME とやり取りするスクリプトは、IFRAME のコンテンツの読み込みが完了しない限り失敗します。 このイベントは、IFRAME のコンテンツの読み込みが完了した直後に実行するスクリプトを指定するための場所を提供します。
詳細:IFRAME OnReadyStateComplete イベント
PreSearch イベント
検索属性のコントロールにイベント ハンドラーを追加するには、addPreSearch メソッドを使用します。 イベント ハンドラーを手動で適用するユーザー インターフェイスはありません。 このイベントを addCustomFilter、addCustomView、および setDefaultView メソッドと共に使用して、ユーザーがレコードを検索して、それを検索フィールドの値として設定するときに開くビューをコントロールします。
業務プロセス フローのコントロール イベント
Microsoft Dynamics 365 (オンラインおよび設置型) により、業務プロセス フロー コントロールとのユーザーのやり取りに 3 つのイベントが提供されます。
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 オブジェクト モデルの使用
フォーム スクリプトの簡易参照
Microsoft Dynamics 365 での JavaScript の使用
クライアント側のプログラミング リファレンス
フォーム イベント(クライアント側の参照)
<events> (FormXml)
Microsoft Dynamics 365
© 2017 Microsoft. All rights reserved. 著作権