RecordSet.batch-events?=true 時でもRecordModifiedイベントが発行されてしまう - Printable Version +- Curl Global Community (https://communities.curl.com) +-- Forum: Discussions (https://communities.curl.com/forumdisplay.php?fid=1) +--- Forum: General Curl questions (https://communities.curl.com/forumdisplay.php?fid=2) +--- Thread: RecordSet.batch-events?=true 時でもRecordModifiedイベントが発行されてしまう (/showthread.php?tid=1022) |
RecordSet.batch-events?=true 時でもRecordModifiedイベントが発行されてしまう - umemura - 12-25-2013 RecordSet に対して RecordModified イベントをハンドリングして、 あるレコードの変更に付随した処理が流れるようにしています。 しかし、この処理は、画面の初期処理では流したくないので、 ユーザーがグリッド内を操作したときと、プログラム内でレコードの値を修正したときとで、 その変更に付随する処理を行うかどうかを切り替えるために、 RecordSet.batch-event?=true を設定して、RecordModified が発行されないようにしています。 しかし、下記のコードでは、RecordModified が発行されてしまっており、 画面の初期処理の中でも付随処理が走ってしまっています。 これはなぜでしょうか。 Code: def r = {rs.select-one} 他の batch-events? では、正常にRecordModifiedが抑止されていおり、 なぜここだけうまくいかないのかがわかりません。 RE: RecordSet.batch-events?=true 時でもRecordModifiedイベントが発行されてしまう - umemura - 12-25-2013 batch-event?=true を指定していてもRecordModifiedが発生する原因は、 batch-events?=true の間に変更された項目が、1つだけだったから、ということのようです。 batch-events? がfalse に戻った際に、それまでにたまったイベントがひとつだけであれば、 RecordsBulkChanges ではなく、RecordModified が発行される、ということのようですね。 ヘルプにも、下記のように記載されていました。 このフラグが true の間は、RecordSet 自体で RecordSetEvent を発生できなくなります。 このフラグが false に戻されると、 この期間にレコードセットの状態に起こった変化を表す 1 つの RecordsChanged が発生します。 これは通常 (常時ではありません)、RecordsBulkChanges です。 初期処理の後にイベントを追加するか、 業務画面のフィールドにフラグをもって、そちらを参照して、 付随処理を流すかどうかを判断するようにしてみます。 |