1

我正在使用 kendoUI 拖放控件对我的列表进行排序。我发现这个 jsfiddle http://jsfiddle.net/ruse ​​v/nmB69/并且一切正常,但是当我在我的网站上实现它时它不起作用。

我在我的页面上使用jquery-1.7.1.min.js和。kendo.all.min.js

如果你看小提琴,你可以看到一些console.log。我登录的值对于小提琴和我的应用程序是不同的,例如:

在小提琴中我进入控制台:

1
u.extend.f
[<td>3</td>]
u.extend.f

在我的应用程序中的相同情况下,我得到:

undefined
undefined
[<td>Text 1</td>]
undefined

在提示参数中创建的元素在我删除后显示。

我是 Kendo UI 的新手,所以我不知道如何修复它。

任何帮助,将不胜感激。

4

1 回答 1

2

我试过这个,遇到了和你一样的问题。然后我注意到 jsfiddle 示例使用的是 Kendo UI v2011.3.1129,而我使用的是 Kendo UI Beta v2012.2.621。这些版本之间发生了重大变化。

解决方案是使用与 jsfiddle 示例相同的版本或更改您的代码。获取数据源时,我在两个地方更改了代码。Grid 小部件现在使用 Model 的 uid 字段而不是 id,它表示其唯一的 id。此外,为了通过其 uid 检索模型实例,应使用 DataSource 的 getByUid 方法。

jsfiddle 示例:

var target = dataSource.get($(e.draggable.currentTarget).data("id"))

更改代码

var target = dataSource.getByUid($(e.draggable.currentTarget).data("uid"))

这必须对目标和目的地都进行。

    grid.table/*.find("tbody > tr")*/.kendoDropTarget({
      group: "gridGroup",
      drop: function (e) {
        var target = dataSource.getByUid($(e.draggable.currentTarget).data("uid")),
              dest = $(e.target);

        if (dest.is("th")) {
          return;
        }
        dest = dataSource.getByUid(dest.parent().data("uid"));

        //not on same item
        if (target.get("id") !== dest.get("id")) {
          //reorder the items
          var tmp = target.get("position");
          target.set("position", dest.get("position"));
          dest.set("position", tmp);

          dataSource.sort({ field: "position", dir: "asc" });
        }
      }
    });
于 2012-06-28T13:54:20.853 回答