Добрый день.
Проблема с обновлением грида детали после добавления элемента в деталь. Элемент не появляется в гриде сразу после выбора.
1. Выбор элементов в детали реализован с помощью LookupUtilities:
var lookupConfig = {
entitySchemaName: "BankingService",
columnName: "Name",
columns: ["ClientType"],
multiSelect: true,
filters: filters
};
LookupUtilities.ThrowOpenLookupMessage(
sandbox,
lookupConfig,
this.addBankingServiceItemsCallback,
this,
this.getCardModuleSandboxId()
);
2. Собственно callback-функция для обработки выбора пользователя:
this.methods.addBankingServiceItemsCallback = function(args) {
if (!args || args.selectedRows.getCount() === 0) {
return;
}
var selectedIds = args.selectedRows.getKeys();
var synchronizedRule = this.filterValue;
var batchQuery = Ext.create('Terrasoft.BatchQuery');
Terrasoft.each(selectedIds, function(item) {
var insert = Ext.create('Terrasoft.InsertQuery', {
rootSchemaName: this.entitySchema.name
});
var newGuid = Terrasoft.generateGUID();
insert.setParameterValue(
'Id',
newGuid,
Terrasoft.DataValueType.GUID
);
insert.setParameterValue(
'BankingService',
item,
Terrasoft.DataValueType.GUID
);
insert.setParameterValue(
'SynchronizedRule',
synchronizedRule,
Terrasoft.DataValueType.GUID
);
batchQuery.add(insert);
}, this);
batchQuery.execute();
sandbox.publish('DetailChanged', {detailName: this.entitySchema.name}, [this.getSenderSandboxId()]);
};
3. Обработчик события DetailChanged на странице редактирования объекта с деталью:
this.methods.detailChangedSubscriber = function(args) {
viewModel.reloadDetail(args.detailName + 'Detail');
};
Однако, после нажатия кнопки "Выбрать", выбранные записи в гриде детали не отображаются. Если нажать "Сохранить" на странице редактирования объекта и потом открыть заново этот объект для редактирования, то в детали выбранные записи видны.
Как обновить грид детали, чтобы выбранные элементы отображались непосредственно после выбора?
Заранее благодарен за помощь!