はじめに
取引先検索画面作成時、
複数レコード削除実装につまづいたので、まとめます
問題
複数レコード削除後、画面が更新されない
解決方法
複数削除メソッドの最後に、レコードを再取得し表示する処理をいれる
(*一部省略しています)
実装例
/**
* 一括削除ボタンが押されたら起動するメソッド
*/
public void bulkDelete() {
try {
// 削除実行
delete [SELECT Id FROM Contact WHERE Id IN :contactListCtrl.selectedIds];
search(); // レコードを再取得して一覧更新
// ↑この処理がないと、表示レコードが変わらない!
}
問題は、
delete後、データベース自体からはレコードが削除されているが、
表示されているリストのレコード情報は、削除前のままになっている
こと。
参考画像
私のレコード取得の流れが、
検索ボタンが押される → searchメソッド回る → レコード取得 → リストで表示
であるため、もう一度searchメソッドを回すことで、リストを更新できた。
この辺は人によりそうだが、
「削除後レコードを再取得し、リストを再表示する」
工程を入れれば解決する。
おわりに
頭がパンクして大変でした