3

プライマリグリッドで行をセカンダリグリッドに正しくドラッグ/ドロップしています。私の質問は、行がセカンダリグリッドにドロップされる直前にチェックを実行して、ドロップしようとしている行がすでに存在するかどうかを判断するにはどうすればよいですか?セカンダリグリッドにすでに存在する場合は、ユーザーにドロップさせないでください。基本的に、ドラッグアンドドロップ機能を停止します。

ドロップしようとしている行からキー値を取得できると思います。次に、その値が、すでに削除した行の1つにキー値としてすでに存在するかどうかを確認します。この関数を何らかの方法で使用する必要があると思います。

beforedrop : function(e,ui,data,source,target) { }

またはこの関数:

ondrop: function (ev, ui, getdata) { }

誰かアイデアはありますか?

4

1 に答える 1

5

使用例は次のようになります

$("#grid1").jqGrid('gridDnD', {
    connectWith: '#grid2',
    beforedrop: function (ev, ui, getdata, $source, $target) {
        var names = $target.jqGrid('getCol', 'name2');
        if ($.inArray(getdata.name2, names) >= 0) {
            // prevent data for dropping
            ui.helper.dropped = false;
            alert("The row is already in the destination grid");
        }
    }
});

デモでは、行「test1」を最初のグリッドから2番目のグリッドにドロップすることはできません。

ここに画像の説明を入力してください

他の行は問題なく削除されます。

于 2012-04-16T19:39:45.750 に答える