我的网格有问题,我在其中使用可排序小部件和虚拟滚动(用于无限滚动)。实际上,当您开始拖动元素之一,然后滚动,然后鼠标向上时,就会出现问题。您可以在这里看到这些操作的结果 - http://prntscr.com/7kvtn6。我下药的物品找不到它的位置。
var data = [
{'Id': 1, 'FirstName': 'John_1'},
{'Id': 2, 'FirstName': 'John_2'},
{'Id': 3, 'FirstName': 'John_3'},
{'Id': 4, 'FirstName': 'John_4'},
{'Id': 5, 'FirstName': 'John_5'},
{'Id': 6, 'FirstName': 'John_6'},
{'Id': 7, 'FirstName': 'John_7'},
{'Id': 8, 'FirstName': 'John_8'},
{'Id': 9, 'FirstName': 'John_9'},
{'Id': 10, 'FirstName': 'John_10'}];
var grid = $('.js-reorder').kendoGrid({
dataSource: {
data: data,
pageSize: 4,
serverSorting: true,
serverPaging: true
},
height: 125,
scrollable: {
virtual: true
},
columns: [
{ field: "Id", title: "ID", width: "110px" },
{ field: "FirstName", title: "First Name", width: "130px" }
]
});
grid.find('.k-grid-content').find('tbody').kendoSortable({
cursor: 'move'
});
其实我找到了原因。当您开始拖动项目时,kendo 会为其创建占位符,当您移动此项目时,kendo 也会移动占位符。但是当你滚动时,剑道会在网格中加载新项目并替换表格中所有已经存在的元素,包括占位符。因此,当您向上移动鼠标时,kendo 找不到项目的占位符并将其插入当前鼠标位置,我们就拥有了我们所拥有的。
smb 可以帮助避免这种行为吗?
这里的例子 - http://jsfiddle.net/eu20k7zg/5/