Цитата:
Сообщение от
wojzeh
validateDelete не вызывает проблем - зовёшь ты его или нет. прочитай уже ВНИМАТЕЛЬНО, что написано.
конкретно в данной ситуации всё более чем кошерно:
- отключаем валидацию на форме, чтоб не задавать вопроса о подтверждении, как доктор прописал;
- перед непосредственным удалением методом delete проверяем, всё ли в порядке табличным валидатором;
описанный подход - просто сказка!
теоретическая дискуссия о том, что можно и нельзя, всегда упирается в конкретные потребности бизнеса и наши возможности их реализовать.
можешь привести конкретный пример, где, как ты это называешь, "хакерство" приводит к плачевным последствиям?
Например вызов табличного валидатора в методе delete источника данных
(1)_ds.delete() --> (2)_ds.validateDelete() --> (3) table.validateDelete() --> (4) table.delete().
Согласен что отключение super в (2) _ds.validateDelete() для отключения диалога - нормальный ход который по идее прерывает эту цепочку. Но судя по всему мы не контролируем эту цепочку в случае deleteMarked.
deleteMarked() не вызывает _ds.delete(), а используется вместо. Что за цепочку методов он там использует - непонятно.
Почему не вызывать табличный (3) table.validateDelete() на уровне таблицы в (4) table.delete()?
Можно добавить if (.dataSource() && ) если нужно такое ограничить вызовами с формы.