3

グリッド行の並べ替えを可能にするドラッグ可能な剣道グリッドがあります。

        grid.table.kendoDraggable({
            filter: "tbody > tr",
            group: "gridGroup",
            hint: function (e) {
                return $('<div class="k-grid k-widget"><table><tbody><tr>' + e.html() + '</tr></tbody></table></div>');
            }
        });

        grid.table.kendoDropTarget({
            group: "gridGroup",
            drop: function (e) {
                e.draggable.hint.hide();
                var target = dataSource.getByUid($(e.draggable.currentTarget).data("uid")),
                    dest = $(document.elementFromPoint(e.clientX, e.clientY));

                if (dest.is("th")) {
                    return;
                }

                dest = dataSource.getByUid(dest.parent().data("uid"));

                if (target.get("Id") !== dest.get("Id")) {
                    var tmp = target.Priority;
                    target.Priority = dest.Priority;
                    dest.Priority = tmp;

                    dataSource.sort({ field: "Priority", dir: "asc" });
                }
            }
        });

設定することでインライン編集を行うこともできます

editable: "inline"

{
    command: ["edit"]
}

ただし、編集可能なフィールドをクリックしようとしているときにドラッグが有効になっていると、剣道グリッドはいくつかの厄介なことをします。kendoDraggable コードをコメント アウトすると、編集は問題なく機能します。kendoGrid の「編集」コマンドをキャプチャし、それを使用してドラッグ機能を無効にする方法を探しています。もちろん、ユーザーがインライン編集モードを終了した後、ドラッグを再度有効にする必要があります。

何かご意見は?

4

1 に答える 1

7

フィルタを作成して、現在編集中の行を除外することができます。

grid.table.kendoDraggable({
  filter: "tbody > tr:not(.k-grid-edit-row)",

これが実例です。

于 2013-02-27T18:17:57.120 に答える