如何防止在 Kendo 可排序/集成 - ListView 中对项目进行排序(固定位置)?
How to prevent an item to be sorted (fix positon) in Kendo Sortable / Integration - ListView?
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必须固定在它的位置上。
我找到了答案,这是一个演示:https://demos.telerik.com/kendo-ui/sortable/filter-disable
.
对于我的具体情况:
不需要修改e.newIndex.
对于 filter: "div.myclass.sortable"
,我允许只有 class "sortable" 的 div 是可排序的。
我为所有 div.myclass 元素提供 class 可排序(在我的 Kendo-listview-template 中)。
为了防止 div 被排序,我搜索它并删除 class 可排序的:
var sortableItems = $(".sortable");
var nonSortableItem = sortableItems[35];
nonSortableItem.classList.remove("sortable"); //now that one stays fix
如果你只是想让你不能移动一个项目(但它不必在其他项目移动时保持固定),你必须使用 disable 而不是过滤器(@另见上面的演示)。
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必须固定在它的位置上。
我找到了答案,这是一个演示:https://demos.telerik.com/kendo-ui/sortable/filter-disable .
对于我的具体情况: 不需要修改e.newIndex.
对于 filter: "div.myclass.sortable"
,我允许只有 class "sortable" 的 div 是可排序的。
我为所有 div.myclass 元素提供 class 可排序(在我的 Kendo-listview-template 中)。
为了防止 div 被排序,我搜索它并删除 class 可排序的:
var sortableItems = $(".sortable");
var nonSortableItem = sortableItems[35];
nonSortableItem.classList.remove("sortable"); //now that one stays fix
如果你只是想让你不能移动一个项目(但它不必在其他项目移动时保持固定),你必须使用 disable 而不是过滤器(@另见上面的演示)。