Добрый день!
Задача банальная: я выделил какое-то количество записей (может, все), с каких-то выделение наоборот снял, и мне нужно получить список их идентификаторов.
С тем, что this.get("SelectedRows") возвращает не все записи, я уже смирился. Оптимизация и всё такое.
Но должен же быть нормальный способ получения этих Id, это же типовая задача. В 7.11 я начал копать в сторону получения записей для выгрузки в Excel, нашел метод, который получает esq для выгрузки, и это была победа. Пока не случилось обновление до 7.12.
Старые методы пропали, а новый, используемый в этой выгрузке, стал просто возвращать все записи согласно фильтру, без учета выделения.
Итак, вопрос: как мне получить корректный список выделенных записей и не бояться, что всё сломается после очередного обновления?
Нравится
Сейчас получил список таким образом:
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;
},
Интересно вот только, сколько обновлений переживет этот код:)