Сортировка столбца, при добавления компонента на рендере экрана

Добрый день, в экране есть treeDataGrid в одну из колонок в момент рендера добавляется компонент (к примеру Span) и нужно реализовать возможность сортировку dataGrid по этой колонке т.е. по значениям внутри этого span. Подскажите пожалуйста, как это сделать? Если я правильно понял, то сортировка не работает т.к. добавляемый компонент не является property в определённой сущности.
image

Да. Это основное.

Варианты есть, но зависит от того, что за содержимое в этой коронке.
Посмотрите эту тему Sort column by generated component - Support - Jmix
Возможно, подойдет.

Правильно понимаю, что нужно указывать атрибуты в сущности, но помечать их аннотациями @JmixProperty и @Transient. Появляется вопрос, в treeDataGrid я добавлю property этих атрибутов, но заполнять их могу в экране? Или нужно заполнять их в методе геттере в классе сущности

Да, это самый простой вариант.

Заполнять атрибут теоретически можно и в геттере в классе сущности , и где-то при обработке события EntityLoadingEvent или на экране.

Но если на экране, то тут надо гарантированно заполнить ваши атрибуты до того как начнет отрисовываться DataGrid. Например, в loadDelegate.

1 симпатия

Добрый день, добавил заполнение в геттере метода класса сущности. Сортировка в таком случае стала работать только при условии когда вызывается метод sortInMemory. В всех остальных случаях сортировка не работает. Пример: есть 100 записей сущности, в экране выводится первые 10 записей, в этом случае не сработает сортировка по памяти и произойдёт вызов к бд с попыткой сортировать по этому значению, но т.к. значение в бд null, то сортировка не работает
image
image

Все правильно - сортировка по такой коронке и “вычисляемому” атрибуту будет работать корректно только если все данные загружены в память.

Если динамически подгружаются или постранично - сортировка отработает только для того, что сейчас есть на экране.

А как иначе? Данные в этой “генерируемой” колонке появляются только при загрузке экземпляров сущности в память.