IM-BloomMaker のリッチテーブルでは、
リッチテーブル部品以外の操作(アクションの実行など)によって dataSource プロパティに紐づく変数が更新された場合、
データと選択行の不整合を防ぐため、selected プロパティの値が自動的にクリアされる仕様となっています。
想定される不整合の例は次のとおりです。
・データのインデックスがずれる
・データ件数より大きいインデックスが selected に格納される
・更新前と全く異なる一覧データが格納され、selected と紐づかなくなる
チェックボックスの選択状態を維持したい場合は、
dataSource プロパティに設定している変数を更新した後で、
selected プロパティに紐づけている変数へ選択情報を再代入してください。
その際、dataSource プロパティの変数更新処理と selected プロパティの変数更新処理の間に、
遅延処理を追加することを推奨します。以下は実装例です。
return new Promise((resolve) => setTimeout(resolve, 50));
遅延時間は利用環境に応じて調整してください。
値を小さくするとアクションの実行時間は短縮されますが、環境によっては選択状態が正しく反映されない場合があります。
例えば、アクション内で dataSource プロパティと selected プロパティを同時に更新すると、
selected の設定後に selected プロパティのクリア処理が実行され、結果としてチェックが反映されないことがあります。
このため、両者の更新処理の間に遅延処理を挟むことで、意図した選択状態を保持しやすくなります。
-- 対象 -------------------------------------------------------------------------
iAP/Accel Platform/全アップデート
-----------------------------------------------------------------------------------
FAQID:1467
IM-BloomMakerのリッチテーブルで、dataSourceプロパティに紐づけた変数を更新すると、 selectionTypeプロパティが単一選択または複数選択の場合にチェックボックスがクリアされるのはなぜですか?