Как я могу создать оболочку draganddrop внутри строки таблицы, которая может представлять всю строку

#css #drag #vaadin #treetable

#css #перетащите #vaadin #treetable

Вопрос:

Когда я использую treetable в Vaadin, он работает нормально, перетаскивая всю строку при щелчке левой и правой пустых областей. но это не удобно для пользователя, я хочу создать перетаскиваемый макет внутри строки, скажем, 1-й компонент каждой строки, чтобы при нажатии на него выделялась вся строка, и ее можно перетаскивать и удалять для изменения порядка.

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

Ответ №1:

Боюсь, в настоящее время нет способа добавить оболочку, которая расширила бы всю строку, а не только одну ячейку. Для этого вам нужно будет расширить реализацию Table на стороне клиента (VScrollTable), и это не то, что я бы рекомендовал, поскольку это довольно сложно.

Я действительно думаю, что то, что вы описываете, должно быть возможно в core Vaadin (без использования оболочек перетаскивания), поэтому не могли бы вы подать заявку по адресу dev.vaadin.com ? И, пожалуйста, приложите небольшое приложение, показывающее проблему, чтобы нам было легче увидеть проблему и исправить ее.

В любом случае, чтобы вы могли заставить его работать сегодня, я бы посоветовал вам немного изменить дизайн пользовательского интерфейса и, например, позаимствовать дескрипторы перетаскивания из iOS. Под этим я подразумеваю, что вы могли бы добавить значок, который предлагает «перетаскиваемый» в качестве фонового изображения в первой ячейке (или в ячейке заголовка строки каждой строки), который побуждает пользователя захватывать строку там, где она «пуста», и перетаскивание работает. Таким образом, пользователь может быть не слишком смущен, если перетаскивание надежно работает только в некоторых частях строк.