Как предотвратить сортировку элемента (исправить положение) в Kendo Sortable / Integration - ListView? - PullRequest
0 голосов
/ 08 ноября 2018
var dataSource = new kendo.data.DataSource({
        data: anArray
    })

var listView = $("#listView").kendoListView({
    name: "listView",
    tagname: "div",
    dataSource: dataSource,
    template: kendo.template($("#listview-template").html()),
});

listView.kendoSortable({
        filter: ">div.myclass",
        cursor: "move",
        placeholder: function (element) {
            return element.clone().addClass("placeholder").text("position here")
        },
        hint: function (element) {
            return element.clone().removeClass("k-state-selected");
        },
        change or move or end?: function(e){
            if(e.newIndex==35){
                 --e.newIndex;
                 console.log(e.newIndex); //output is 34, but the element is moved to 35
            }
        }
});

Я хочу предотвратить вставку перетаскиваемого элемента после элемента A (вместо этого он может быть вставлен в предыдущий индекс), а также невозможность перетаскивания элемента A.

Таким образом, элемент А должен оставаться на своей позиции.

1 Ответ

0 голосов
/ 09 ноября 2018

Я нашел ответ, и вот демо: https://demos.telerik.com/kendo-ui/sortable/filter-disable ,

Для моего конкретного случая: Нет необходимости изменять e.newIndex.

С filter: "div.myclass.sortable" я допускаю, что только div с классом "sortable" могут быть отсортированы. Я даю всем элементам div.myclass сортируемый класс (в моем Kendo-listview-template).

Для предотвращения сортировки div я ищу его и удаляю сортируемый класс:

var sortableItems = $(".sortable");
var nonSortableItem = sortableItems[35];               

nonSortableItem.classList.remove("sortable"); //now that one stays fix 

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

...