Вопрос

Получение списка выделенных записей

Добрый день!

Задача банальная: я выделил какое-то количество записей (может, все), с каких-то выделение наоборот снял, и мне нужно получить список их идентификаторов.

С тем, что this.get("SelectedRows") возвращает не все записи, я уже смирился. Оптимизация и всё такое.

Но должен же быть нормальный способ получения этих Id, это же типовая задача. В 7.11 я начал копать в сторону получения записей для выгрузки в Excel, нашел метод, который получает esq для выгрузки, и это была победа. Пока не случилось обновление до 7.12.

Старые методы пропали, а новый, используемый в этой выгрузке, стал просто возвращать все записи согласно фильтру, без учета выделения.

Итак, вопрос: как мне получить корректный список выделенных записей и не бояться, что всё сломается после очередного обновления?

Нравится

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

Сейчас получил список таким образом:

            getCorrectEsq: function() {

                var esq;

                var selectedRecordsConfig = this.getSelectedRecordsConfig();

                if(selectedRecordsConfig.selectAllMode == true) {

                    esq = this.getGridDataInitializedEsq(true);

                    var filters = this.getFilters();

                    var unselectedItems = this.getUnselectedItems();

                    var entitySchema = this.getGridEntitySchema();

                    if (unselectedItems.length) {

                        var notInFilter = this.Terrasoft.createColumnInFilterWithParameters(

                            entitySchema.primaryColumnName, unselectedItems);

                        notInFilter.comparisonType = Terrasoft.ComparisonType.NOT_EQUAL;

                        filters.addItem(notInFilter);

                    }

                    esq.filters.add('esqSubFilter', filters);

                }

                else {

                    var esq = this.getGridDataInitializedEsq(true);

                    esq.filters = this.Ext.create("Terrasoft.FilterGroup");

                    esq.filters.logicalOperation = Terrasoft.LogicalOperatorType.OR;

                    if(!Ext.isEmpty(selectedRecordsConfig.selectedItems)) {

                        selectedRecordsConfig.selectedItems.forEach(function (itemId) {

                            esq.filters.add("filterItemById" + itemId,

                            esq.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL,

                                "Id", itemId));

                        }, this);

                    }

                }

                return esq;

            },

Интересно вот только, сколько обновлений переживет этот код:)

В SDK приводят примеры именно через this.get("SelectedRows").

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