Добрый день, коллеги!
Возник простейший, но очень важный вопрос.
Я создал деталь (от FileDetailV2) и добавил в нее новый Grid путем объявления в diff. Эта часть сработала корректно. Новый грид называется Datagrid1.
Теперь хочу добавить в этот грид индикаторы сортировки. Но не понял, как мне попасть в скоп моего нового грида и оттуда вызвать этот метод addSortColumnIndicator? Отсюда два вопроса, как корректно вызвать этот метод и как его переопределить(например) для данного грида?
Нравится
1) Можно заглянуть в метод sortColumn. Вот описание сортировки в типичном гриде:
"sortColumn": {"bindTo": "sortColumn"}, "sortColumnDirection": {"bindTo": "GridSortDirection"}, "sortColumnIndex": {"bindTo": "SortColumnIndex"},
"Шумков Виталий" написал:переопределить(например) для данного грида?
2) Если метод из GridUtils, то можно прям в схеме детали переопределять метод (скопировать код и изменить или callParent-ом вызвать родителя)
"sortColumn": {"bindTo": "sortColumn"}, "sortColumnDirection": {"bindTo": "GridSortDirection"}, "sortColumnIndex": {"bindTo": "SortColumnIndex"},
Насколько я понимаю, это свойства, а мне нежно вызвать метод.
Метод принадлежит самому гриду
https://academy.terrasoft.ru/jscoresdk/#!/api/Terrasoft.controls.Grid
Как создать грид с уже имеющимися сортировочными колонками тоже неясно.
До методов которые не открыты наружу вы не как не достучитесь, и в скоуп контрола не попадете, можете разве что написать свой грид, наследуясь от базового грида, и переопределить там любой метод.
А вообще в конфиге грида написано:
...
sortColumnIndex: {
changeEvent: "sortColumn",
changeMethod: "setSortColumnIndex"
},
...
Следовательно если вы привяжите как указано выше:
"sortColumnIndex": {"bindTo": "SortColumnIndex"},
то установке и изменении этого самого атрибута SortColumnIndex вызовется метод базового грида
setSortColumnIndex а он вызовет метод updateSortColumn а он в свою очередь вызовет addSortColumnIndicator вот ответ на ваш первый вопрос, как вызвать этот addSortColumnIndicator,
как его переопределить, в самом начале моего комментария, написать свой контролл, наследуясь от базового.
Спасибо, за ответ!
много чего попробовал, но ничего не подходит.
Сейчас код детали такой
new_3.txt
При изменении SortColumnIndex ничего не происходит. Может в коде что-то не так.
Также заметил, что при инициализации грида вызывается из GridUtilitiesV2 метод
initSortActionItems: function() { var collection = this.Ext.create("Terrasoft.BaseViewModelCollection"); var gridColumns = this.mixins.GridUtilities.getProfileColumns.call(this); this.Terrasoft.each(gridColumns, function(column, columnName) { collection.addItem(this.getButtonMenuItem({ Caption: {bindTo: this.name + columnName + "_SortedColumnCaption"}, Tag: columnName, Click: {bindTo: "sortGrid"} })); }, this); this.set("SortColumns", collection); this.updateSortColumnsCaptions(this.get("Profile")); },
this.updateSortColumnsCaptions(this.get("Profile"));
но this.get("Profile") возвращает пустой DataGrid. Может в этом загвоздка? Как думаете?
Попробуйте раз вы удалили существующий дата грид,
новый добавить с таким же именем, без приставки 1
Пробовал =)
Сейчас с техподдержкой занимаемся, вроде есть какое-то решение, но пока не получается.