Kendo Sortable (две колонки): проблемы с перемещением панелей
Вот мой рабочий код:
http://jsfiddle.net/fmpeyton/9a8sxw9z/
Вот инициатор Kendo Sortable:
$(".panels").kendoSortable({
filter: ".panel",
cursor: "move",
change: function () {
},
placeholder: function (element) {
return element.clone()
.css({ "opacity": 0.8, });
},
hint: function (element) {
return element.clone()
.css({ "border": "1px solid #a2a2a2" })
.height(element.height())
.width(element.width());
}
});
У меня есть несколько вопросов:
- Когда я перемещаю все панели из столбца, я не могу переместить все панели обратно в пустой столбец.
- В некоторых редких случаях я не могу двигать определенные панели. (Один сценарий, который я могу воспроизвести, - это перемещение "Панели 1" из левого столбца в верхнюю часть правого столбца. Несмотря на то, что заполнитель панели отображается, панель всегда возвращается в исходное положение.)
- Когда у меня есть "Панель 1" в левой колонке, а остальные три панели справа, чтобы можно было опустить панель под "Панелью 1", мне нужно сначала перетащить ее на "Панель 1", чтобы активировать эту функцию., В идеале я хотел бы иметь возможность перетаскивать его внизу и оставлять там.
Есть идеи, почему эти вещи могут происходить? Есть ли какие-либо изменения CSS, которые я мог бы сделать, чтобы решить эту проблему?
2 ответа
Я решил эту проблему двояко:
- Инициализация двух экземпляров
Sortable
виджет и подключение их черезconnectWith
вариант - Добавление
min-height
в столбцы, так что вы можете добавить панели для пустых столбцов.
Большое спасибо @OnaBai за помощь в решении этой проблемы. Вот рабочая скрипка: http://jsfiddle.net/fmpeyton/m72f5z6h/
Объяснение ваших проблем заключается в возможной оптимизации в Kendo UI Sortable реализации. Когда вы определяете Sortable, он создает список со всеми элементами, которые можно сортировать. Когда вы пытаетесь сбросить элемент в той же позиции упорядочения, он отклоняет движение. Т.е., если вы попытаетесь переместить последний элемент первого столбца в первую позицию второго столбца, KendoUI вычислит, что oldIndex
а также newIndex
одинаковы, так как нет изменений, он отклоняет движение.
Sortable
для сортировки, а не для перетаскивания. Когда вы перемещаете элемент между столбцами, вы не сортируете, а перетаскиваете. В вашем случае это правда, что существует большая визуальная разница между последним в одном столбце или первым в другом, но если вы думаете с точки зрения индексов и массивов, это не имеет значения.
Когда у вас есть пустой столбец, вопрос в том, что область сброса должна быть panel
(для чего вы фильтруете). Будучи пустым, нет допустимой области, куда его можно бросить.
Вы должны рассмотреть возможность использования Draggable
а также DropTargetArea
а также DropTarget
,