Проблема с выбором записи после обновления GridData страницы раздела.
День добрый!
Подскажите, плиз, есть одна задача по отображению в одном разделе записи из двух других разделов (предыдущий пост), вопрос в другом: переопределив метод onDeleteAccept по удалению записи и обновляя GridData невозможно выбрать другие записи, только принудительно обновив страницу.
var activeRowId = this.get("ActiveRow");
this.isClient(activeRowId);
this._refreshGrid();
},
isClient: function(activeRowId){
var gridData = this.get("GridData");
var rootSchemaName;
var selectedClient = gridData.get(activeRowId);
var selectedClientType = selectedClient.get("UsrType");
if (selectedClientType.value === "dcf866af-2bd9-49fc-9fa8-6ad9b26b0b56"){
rootSchemaName = 'Account';
var dq = Ext.create('Terrasoft.DeleteQuery', {rootSchemaName: rootSchemaName });
dq.filters.add('IdFilter',
dq.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL,
'Id',activeRowId));
dq.execute();
}
else if(selectedClientType.value === "1634f125-6c8e-4fe4-8804-9181a29009ec"){
rootSchemaName = 'Contact';
var dq = Ext.create('Terrasoft.DeleteQuery', {rootSchemaName: rootSchemaName});
dq.filters.add('IdFilter',
dq.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL,
'Id',activeRowId));
dq.execute();
};
},
_refreshGrid: function(){
var shema = "UsrClient";
var esq = this.getChartsSelectQuery(shema);
esq.getEntityCollection(function(response) {
var entities = response.collection;
if (response.success) {
var collection = this.get("GridData");
collection.clear();
this.reloadGridData();
collection.loadAll(entities);
}
}, this);
}
Нравится
Здравствуйте, Александр!
Спасибо за Ваше обращение. Мы зарегистрировали его в Службе технической поддержки и назначили специалиста, который сможет Вас компетентно проконсультировать по данному вопросу.
Александр, по фотографии в этом случае трудновато будет вылечить, но, думаю, что неправильно реализован метод "_refreshGrid". Как я понял, Вы выбрали реализацию через создание объекта - развязки. В этом случае, Вам, в принципе, не нужно полностью переопределять базовый метод удаления. Вам нужно сначала запомнить выделенную запись, вызвать родительский метод, который удалит запись из объекта-развязки - "UsrClient" и обновит грид. А Вам нужно определить метод onDeleted, который вызывает базовый метод "onDeleteAccept" после выполнения удаления и передает в него результат. См. GridUtilitiesV2:
onDeleteAccept: function() { this.showBodyMask(); this.callService({ serviceName: "GridUtilitiesService", methodName: "DeleteRecords", data: { primaryColumnValues: this.getSelectedItems(), rootSchema: this.entitySchema.name } }, function(responseObject) { var result = this.Ext.decode(responseObject.DeleteRecordsResult); var success = result.Success; var deletedItems = result.DeletedItems; this.removeGridRecords(deletedItems); this.hideBodyMask(); if (!success) { this.showDeleteExceptionMessage(result); } this.onDeleted(result); }, this); }, /** * Действие, которое будет выполнено после удаления * @Virtual */ onDeleted: this.Ext.emptyFn
Здравствуйте, Андрей!
Спасибо большое за совет, я переопределил этот метод только заменив значение rootSchema, в зависимости от типа Клиента (Контрагент или Контакт), и все заработало как надо.
И грида обновляется тоже нормально.