列の OnChange イベント (クライアント API 参照)
OnChange
イベントは、以下の状況で発生します:
- フォームのカラムのデータが変更され、フォーカスが失われます。 この動作には、ラジオボタンやチェックボックスを使用するようにフォーマットされている Yes/No 列に適用される例外があります。 これらの場合、イベントは、ただちに実行されます。
- レコードを保存した後など、フォームが更新された際に、サーバー上で変更されたデータを取得して、カラムを更新します。
- attribute.fireOnchange メソッドが使用されます。
すべての列が OnChange
イベントをサポートしています。 列のデータは、OnChange
イベントの前後で検証されます。
attribute.setValue メソッドを使ってプログラムで列を変更した場合、OnChange
イベントは発生しません。 値を設定したあとに OnChange
イベントのイベント ハンドラーを実行したい場合、コードで formContext.data.entity attribute.
fireOnchange メソッドを使用する必要があります。 ユーザーがダーティ フォームからの移動時に変更を破棄する場合、列がプログラムで変更されても、OnChange
イベントは発生しません。
ヒント
状態は OnChange
のイベントをサポートしていますが、この列はフォーム上では読み取り専用であるため、ユーザーの操作によってイベントが発生することはありません。 別のスクリプトでは、列に対して fireOnchange メソッドを使用して、このイベントを発生させることができます。
ヒント
OnChange
イベントは同期します。 非同期コードの解決時にアクションの実行や処理の必要がある OnChange
イベント ハンドラでは、非同期コードを使用すべきではありません。 これにより、解決ハンドラーが、アプリ コンテキストが非同期コードが開始されたときと同じままであると想定している場合に問題が発生します。 また、OnChange イベントハンドラでは、同期ネットワークリクエストを行うべきではありません。 これにより、アプリが応答しなくなる可能性があります。
このイベントをサポートするメソッド
列の OnChange
イベントをあつかうには、3つの方法があります:
関連記事
コントロール (クライアント API 参照)
イベント (クライアント API 参照)
モデル駆動型アプリのフォームとグリッド内のイベント