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
}
}
});
我想防止被拖动的项目可以在itemA之后插入(相反,可以将其插入到先前的索引中),并且不能阻止itemA。
因此itemA必须保持位置固定。
答案 0 :(得分:0)
我找到了答案,这是一个演示:https://demos.telerik.com/kendo-ui/sortable/filter-disable 。
对于我的具体情况: 无需修改e.newIndex。
对于filter: "div.myclass.sortable"
,我只允许分类为“ sortable”的divs进行排序。
我为所有div.myclass元素提供了可排序的类(在我的Kendo-listview-template中)。
为防止div排序,我对其进行搜索并删除可排序的类:
var sortableItems = $(".sortable");
var nonSortableItem = sortableItems[35];
nonSortableItem.classList.remove("sortable"); //now that one stays fix
如果只希望您不能移动某个项目(但是当其他项目移动时它不必保持固定状态),则必须使用 disable (禁用)代替过滤器(@参见演示中的以上)。