Как вы сохраняете вложенные таблицы в окне? Кто как делает?
У нас есть грид, по нажатию на строку открывается окно и заполняется данными, но и итображаются еще две вкладки в каждой из которых по еще одному гриду.
Удобно забирать данные окна из записи основного грида, а данные двух других гридов подгружать через CRUD отдельными запросами. Это просто и прозрачно.
Но как их изменения сохранять?
1 Вариант
Мы сохраняем данные полей в основном гриде по нажатию кнопки сохранить.
Два внутренних грида сохраняем сразу после редактирования через autoSync=true.
+ Все легко делается и быстро
- Если нажать "отмена", то сохраненные данные во внутренних гридах останутся измененными, это очень плохо.
2 Вариант
Мы сохраняем данные полей в основном гриде по нажатию кнопки сохранить.
Два внутренних грида сохраняем тоже после нажатия сохранить.
Делаем это через паралельные запросы или последовательность(Promises) и осознаем результат успеха или нет.
+ Сложнее и дольше
- Если часть запросов не сохранится или валидация не пройдет, то часть останется уже сохраненной. Их надо откатывать? Пользователь может решить закрыть окно и подумать что ничего не будет сохранено.
3 Вариант
Мы сохраняем данные полей в основном гриде по нажатию кнопки сохранить.
Два внутренних грида загружаем из подзаписи основного грида и сохраняем тоже через поле основного грида.
Сохраняется одним запросом, сервер работает с данными нескольких гридов сам.
+ Сложнее сервер
- Не явная и сложная CRUD архитектура вложенные CRUD таблиц(для внутренних таблиц надо делать removed, modified, created ключи и передавать измененные данные для batch изменений).
Как делаете вы? Какие сложности и решения были получены с опытом?