1

kendoUI のドラッグ アンド ドロップ コントロールを使用して、リストを並べ替えています。私はこのjsfiddle http://jsfiddle.net/ruse ​​v/nmB69/を見つけて、すべてが正しく動作しますが、これを自分のWebサイトに実装するとうまくいきません。

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 の例と同じバージョンを使用するか、コードを変更することです。データソースを取得するときに、コードを 2 か所変更しました。Grid ウィジェットは、一意の ID を表す id の代わりにモデルの uid フィールドを使用するようになりました。また、Model インスタンスをその 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 に答える