Kendo UI通过控件复制数据

use*_*460 2 kendo-ui kendo-grid

是否可以使用2个单独的Kendo UI网格,并能够通过UI控件来回传递数据(如前进和后退箭头)?

模式将是在左侧获取主列表,选择项目并在右侧具有精致列表。

Ona*_*Bai 5

如果可能并且不难做到,但是您必须自己做,所以您需要:

  1. 有关KendoUI Grid及其DataSource公开事件的一些知识。
  2. 一些有关JavaScript + jQuery的知识可帮助您进行验证并避免错误。

让我们具有以下网格定义:

var grid1 = $("#grid1").kendoGrid({
    dataSource:  ds1,
    selectable:  "multiple",
    navigatable: true,
    pageable:    false,
    columns:     [
        { field: "name", title: "Name" },
        { field: "lastName", title: "Last Name" }
    ]
}).data("kendoGrid");

var grid2 = $("#grid2").kendoGrid({
    dataSource:  ds2,
    selectable:  "multiple",
    navigatable: true,
    pageable:    false,
    columns:     [
        { field: "name", title: "Name" },
        { field: "lastName", title: "Last Name" }
    ]
}).data("kendoGrid");
Run Code Online (Sandbox Code Playgroud)

我们定义两个按钮:

  1. 用于将选定的行从复制grid1grid2
  2. 用于将选定的行从复制grid2grid1

按钮定义为:

<div><a href="#" id="copySelectedToGrid2" class="k-button">&gt;</a></div>
<div><a href="#" id="copySelectedToGrid1" class="k-button">&lt;</a></div>
Run Code Online (Sandbox Code Playgroud)

以及用于管理它的JavaScript:

$("#copySelectedToGrid2").on("click", function (idx, elem) {
    moveTo(grid1, grid2);
});

$("#copySelectedToGrid1").on("click", function (idx, elem) {
    moveTo(grid2, grid1);
});
Run Code Online (Sandbox Code Playgroud)

最后,moveTo将是这样的:

function moveTo(from, to) {
    var selected = from.select();
    if (selected.length > 0) {
        var items = [];
        $.each(selected, function (idx, elem) {
            items.push(from.dataItem(elem));
        });
        var fromDS = from.dataSource;
        var toDS = to.dataSource;
        $.each(items, function (idx, elem) {
            toDS.add({ name: elem.name, lastName: elem.lastName });
            fromDS.remove(elem);
        });
        toDS.sync();
        fromDS.sync();
    }
}
Run Code Online (Sandbox Code Playgroud)

这里的例子