3

親ノード (「LLCA」) の外側にノードをドラッグ アンド ドロップしないようにしようとしています。

助言がありますか?

ツリービューのイメージ

以下のコードを使用して動作するようになりました:

function onDrop(e) {
    var dst = e.destinationNode;
    var first = $('.k-item:first');
    var pos = e.dropPosition;
    if (dst && dst.uid === first.uid && pos !== "over") {
        e.setValid(false);
    }
}
4

2 に答える 2

3

を定義しましょうtreeview:

var tree = $("#tree").kendoTreeView({
    dataSource :content,
    dragAndDrop:true
}).data("kendoTreeView");

私がやろうとしているのはdrop、それを制御するコールバックを追加することです:

  1. 私たちは木の外に落ちていません
  2. ツリーの最初のノードの前後にドロップしていません

ツリーの定義は次のようになります。

var tree = $("#tree").kendoTreeView({
    dataSource :content,
    dragAndDrop:true,
    drop       :function (ev) {
        var dst = tree.dataItem(ev.destinationNode);
        var first = tree.dataItem(".k-item:first");
        var pos = ev.dropPosition;
        if (dst && dst.uid === first.uid && pos !== "over") {
            console.log("invalid");
            ev.setValid(false);
        }
    }
}).data("kendoTreeView");

イベント情報はhttp://docs.kendoui.c​​om / api/web/treeview#drop をご覧ください。drop

于 2012-12-04T23:14:29.057 に答える
2

私は答えにコメントできないので、私は自分自身を書きます。

ユーザー Mithrilhall が MVC ラッパーについて質問しましたが、一番の回答はルート ノードへの移動を妨げるだけです。

私はミスリルホールの両方に答えようとし、親のコンテキスト内でのみ子を移動できる例を提供します. 別の言い方をすれば、任意の親の子のみが親内で順序を変更できるようにします。

まず、MithrilHall の場合、これが MVC のイベントにアクセスする方法です。

@(Html.Kendo().TreeView()
            .Name("ourTreeView")
            .Events(e => e.Drop("treeViewDrop"))

ツリービューには他にもイベントがあります。自分の目で確かめてください。引数は JavaScript 関数の名前です。以下は、この MVC ラッパーの JavaScript 関数の例で、子が親の外に移動するのを防ぎますが、親内では移動できるようにします。

<script type="text/javascript">
    function treeViewDrop(dropEvent) {
        var treeView = $("#ourTreeView").data("kendoTreeView");
        var destination = treeView.dataItem(dropEvent.destinationNode);
        var source = treeView.dataItem(dropEvent.sourceNode);

        if (!(destination && destination.parentID == source.parentID)) {
            dropEvent.setValid(false);
        }
    }
</script>

データソースでモデル化されたparentIDフィールドがありました。これはさまざまな方法で実現できます。dataItem メソッドは kendo ツリービュー アイテムを返すため、モデル化されたすべてのフィールドが含まれています。

また、このソリューションでは、ドロップできない場所に移動しているときにウィジェットが X を表示するように変更されないことも理解してください。これは、別のソリューションの別の問題です。

これがお役に立てば幸いです、頑張ってください!

于 2015-05-14T20:09:26.420 に答える