Воопросы по генерации колонок в DataGrid

Добрый день! Подскажите пожалуйста, как решить такие проблемы:

  1. Есть DataGrid, в котором есть сгенерированная колонка с TextField. При заполнении этих полей по строчкам постоянно слетает фокус (Поменял значение в 1 строке, переключаешься во 2, первая строка обновляется, и фокус пропадает с TextField во 2 строке).

Знаю вариант с TextChangeEventMode, когда запись обновляется LAZY или TIMEOUT, и при переключении уже ничего не происходит, но это не всегда хорошо отрабатывает.

  1. Теперь рассмотрим случай, когда в DataGrid два столбца с TextField, при горизонтальном переключении между ними фокус тоже слетает, и в этом случае не помогает даже TextChangeEventMode.

Важно исключить лишние клики пользователей, поэтому прошу помощи в решении этой проблемы.

Я хотел устанавливать фокус через getWindow().setFocusComponent(), но теперь возникла другая проблема: где искать TextField из DataGrid? Метод их не видит.

Есть похожая тема про таблицу с редактируемыми ячейками. Возможно, корень зла общий.

Возможно скачки фокуса получится усмирить, если отключить выделение строки в DataGrid. В Таблице нам это помогло в качестве временного решения.

1 симпатия

Да, проблема схожая, насколько это вообще возможно)) Но в нашем случае важно именно то, что курсор | слетает с поля, что замедляет заполнение таблицы в несколько раз и жутко раздражает.
Я тоже убрал выделение строки, но ситуацию это кардинально не поменяло:(

Вертикальные скачки фокуса удается победить худо-бедно, горизонтальные никак.

В таблице горизонтальные скачки вроде лечатся заменой остальных не редактируемых колонок на генерируемые с Label компонентом.
Это + отключение выделения у нас в таблице от скачков фокуса избавило.

1 симпатия

Да, помогло, спасибо. Я уже методом исключения сам к этому пришел

Добрый день!

Спасибо, что сообщили о проблеме, создал задачу в баг трекере: cuba-platform/cuba#3018. Единственное у меня не получилось воспроизвести потерю фокуса при вертикальном переключении (между строками). Если Вас не затруднит, можете прикрепить небольшой демо проект, при котором это поведение воспроизводится?