Как поймать событие добавления новых записей в грид

Коллеги, доброго времени суток!

Помогите, пожалуйста, а то я уже всю голову об монитор разбил.

Имеется деталь с редактируемым реестром. Изначально все было просто - шмякнул добавить запись -> появилась новая строчка в гриде со всеми контроллами -> все работает. Теперь потребовалось расширить функционал таким образом, чтобы можно было делать множественное добавление.

Согласно документации, я добавил миксин LookupMultiAddMixin (т.е. в довесок к ConfigurationGridUtilities и сопутствующим). Записи успешно добавляются, но проблема таких записей в том, что при клике на них нет контроллов редактирования. Т.е. на эти вновь добавленные строки никак не наложились обработчики событий и отображение (кнопочки и т.д.). Первое, что пришло на ум - надо сделать перезагрузку всей детали, но вот как поймать это событие (я имею в виду, давление записей в грид) и послать сообщение на перезагрузку детали - никак не получается. Пробовал уже переопределить кучу всяких функций из LookupMultiAddMixin, особенно те, которые асинхронные, но это приводит к неожиданным результатам (например, тупо удваиваются строки).

Заранее благодарен.

Нравится

3 комментария

Да, забыл сказать, что есть еще одна проблема. Когда делаешь добавление одной записи, то используется страница редактирования объекта детали, что позволяет производить различные автовычисления и "подтягивание" значений элемента основного лукапа. Т.е. если я выбрал Продукт, то автоматом можно подтянуть и тип продукта, и прайс и т.д. В случае множественного добавления все эти автовычисления не срабатывают на вновь добавленные записи. Как я полагаю, эту проблему придется решать уже функцией на странице редактирования основной сущности, которая и будет в результате рефрешить деталь. Но для этого надо решить главную проблему из моего поста выше.

это всё из-за ̶с̶п̶а̶й̶с̶о̶в̶ handleAfterInserted. Попробуйте вот это в методах прописать

handleAfterInserted: function(response) {
	if (this.Ext.isEmpty(response) || !response.success) {
		this.hideBodyMask();
		return;
	}
	this.hideBodyMask();
	this.reloadGridData();
}

 

Варфоломеев Данила,

пасиб, добрый человек! все заработало как надо

Показать все комментарии