Primefaces Datatable ограничивает изменение порядка

#primefaces-datatable

#datatable primefaces-datatable

Вопрос:

Мне нужно ограничить событие изменения порядка Datatable PrimeFaces, чтобы оставить таблицу горизонтально невозможно. При желании я хотел бы добавить границу при перетаскивании элемента, чтобы пользователь мог видеть, куда он может поместить элемент.

Я знаю, что эти функции возможны при обычной функции перетаскивания, как мы можем видеть на витрине Primefaces. Ограничение: https://primefaces.org/showcase/ui/dnd/draggable.xhtml (последний элемент)
Выделите область выпадающего списка: https://primefaces.org/showcase/ui/dnd/custom.xhtml

Я просмотрел doku primefaces, но пока не нашел ничего, что позволило бы ограничить область. Для выделения я попытался использовать ajax-событие, используя onstart с js-функцией, которая устанавливает styleclass для таблицы, но поскольку событие запускается не при перетаскивании, а при отбрасывании, это было не так успешно, как я надеялся.

Минимальный пример основан на демонстрации Primefaces, посвященной изменению порядка. Мой xode является копией showcase (https://primefaces.org/showcase/ui/data/datatable/reorder.xhtml ). Единственное, что я изменил, это ширину таблицы данных, чтобы увидеть, возможно ли по-прежнему перемещать элемент выше границы

Есть ли какой-нибудь способ заставить это работать? Я был бы признателен за любую помощь, заранее спасибо!


Версия PrimeFaces: 6.2

Ответ №1:

Я нашел подход, который может сработать для меня. Я добавил немного jQuery и установил ось следующим образом

 <script>
  jQuery(function() {
    PF('widgetVarTableName').tbody.sortable( "option", "axis", "y" );
  });
</script>
 

Подсказка
На данный момент я сталкиваюсь с проблемой, что перетаскиваемый элемент расширяется на всю ширину дисплея, а код запускается только один раз, но, возможно, этот подход поможет другим..

Комментарии:

1. Чтобы избавиться от проблем, которые у меня были, я использовал CSS. P Primefaces имеет стили ui-перетаскиваемый ui-перетаскиваемый-перетаскивание, поэтому я использовал их, чтобы исправить левую позицию и изменить ширину

2. Подсказка: при перетаскивании (в моем случае) в нижней части dom появляется вспомогательный объект со следующими классами стилей: ui-datatable ui-widget ui-sortable-helper. Может быть, это также помогает