Javascript 剑道UI列表视图拖放

Javascript 剑道UI列表视图拖放,javascript,listview,drag-and-drop,kendo-ui,Javascript,Listview,Drag And Drop,Kendo Ui,我有两个剑道UI列表视图。我能够获得加载和显示值的可用选项列表。我还能够让拖动功能发挥作用。问题是目的地的放置功能。我可以让第二个ListView注册为dropTarget,但无法确定如何将DragTable添加到目标ListView 以下是相关代码: var groupDataSource = getReadGroupsDataSourceFor(2819); try { var readgroups = $("#availableReadGroups").k

我有两个剑道UI列表视图。我能够获得加载和显示值的可用选项列表。我还能够让拖动功能发挥作用。问题是目的地的放置功能。我可以让第二个ListView注册为dropTarget,但无法确定如何将DragTable添加到目标ListView

以下是相关代码:

    var groupDataSource = getReadGroupsDataSourceFor(2819);

    try {
        var readgroups = $("#availableReadGroups").kendoListView({
            selectable: "single",
            navigatable: false,
            template: "#if(!IsSelectedGroup) {# <div style='font-size:13px;padding-left:5px;padding-top:5px;'>${GroupName}</div>#} else {# <div class=\"k-state-selected\" style=\"font-size:13px;padding-left:5px;padding-top:5px;\" aria-selected=\"true\">${GroupName}</div> #}#",
            dataSource: groupDataSource
        });

        var selectedGroups = $("#selectedGroupsValues").kendoListView({
            selectable: "single",
            navigatable: false,
            template: "#if(!IsSelectedGroup) {# <div style='font-size:13px;padding-left:5px;padding-top:5px;'>${GroupName}</div>#} else {# <div class=\"k-state-selected\" style=\"font-size:13px;padding-left:5px;padding-top:5px;\" aria-selected=\"true\">${GroupName}</div> #}#",
        });

        readgroups.kendoDraggable({
            filter: "div[role=option]",  
            hint: function (row) {
                return row.clone();
            }
        });

        selectedGroups.kendoDropTarget({
            drop: function (e) {
                var lvObject= selectedGroups.data();
                lvObject.kendoListView.dataSource.add(e.draggable);
            }
        });
    } catch (err) {
        alert(err);
    }
var-groupDataSource=getReadGroupsDataSourceFor(2819);
试一试{
var readgroups=$(“#availableReadGroups”).kendoListView({
可选:“单一”,
可导航:false,
模板:“#如果(!IsSelectedGroup){#${GroupName}}否则{#${GroupName}}}”,
数据源:groupDataSource
});
var selectedGroups=$(“#selectedGroupsValues”)。kendoListView({
可选:“单一”,
可导航:false,
模板:“#如果(!IsSelectedGroup){#${GroupName}}否则{#${GroupName}}}”,
});
readgroups.kendoDraggable({
筛选器:“div[role=option]”,
提示:函数(行){
返回row.clone();
}
});
选择edgroups.kendoDropTarget({
删除:功能(e){
var lvObject=selectedGroups.data();
lvObject.kendoListView.dataSource.add(e.draggable);
}
});
}捕捉(错误){
警惕(err);
}

我终于想出了一个答案,并让它在我的机器上的IE和FireFox中运行;不过,我无法让这个解决方案在JSFIDLE中工作,我也不知道为什么

代码如下:

selectedGroups.kendoDropTarget({
        drop: function (e) {
            var lvObject= selectedGroups.data();
            lvObject.kendoListView.dataSource.add(readgroups.data("kendoListview").dataSource.getByUid(e.draggable.hint.data().uid));
        }
    });

提示属性显然包含jQuery对象,而jQuery对象又有一个数据方法。执行数据方法时,返回的唯一内容是一个具有属性uid的对象。使用此选项,您可以在可拖动源的数据源中搜索数据项。数据项是要提供给目标数据源的add方法的数据项

您的代码似乎还可以,drop事件就是您所需要的。你能在JSFIDLE中给出一个完整的例子吗?然后我可以查看它并提供更多帮助。谢谢您查看它。以下是JSFIDLE链接: