Проблема с выбором записи после обновления GridData страницы раздела.

День добрый!
Подскажите, плиз, есть одна задача по отображению в одном разделе записи из двух других разделов (предыдущий пост), вопрос в другом: переопределив метод onDeleteAccept по удалению записи и обновляя GridData невозможно выбрать другие записи, только принудительно обновив страницу.

 onDeleteAccept: function() {
                    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);
                }

ошибка:

Нравится

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

Здравствуйте, Александр!

Спасибо за Ваше обращение. Мы зарегистрировали его в Службе технической поддержки и назначили специалиста, который сможет Вас компетентно проконсультировать по данному вопросу.

Александр, по фотографии в этом случае трудновато будет вылечить, но, думаю, что неправильно реализован метод "_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, в зависимости от типа Клиента (Контрагент или Контакт), и все заработало как надо.
И грида обновляется тоже нормально.

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