取消JQGrids之间的拖放

时间:2012-01-30 21:51:43

标签: jquery jquery-ui jqgrid

我有要求在网格之间拖放行时提示用户进行确认。目前我正在尝试为行确定一个“可接受”类,如果确认为是,则将drop_opts设置为仅接受该类。下面是我的连接声明和确认功能,我已经排除了网格其余部分的代码,因为没有必要。

$('#MyGrid').jqGrid('gridDnD', { 
connectWith: '#MyGrid2',
onstart: function(evt, ui) {onjqstart(evt, ui)},
drop_opts: { accept: function(el) { return el.hasClass('acceptable'); } }


function onjqstart(evt, ui) {
    var tmp = confirm("Drop it?");
    if (tmp) {
        $(ui.helper).addClass('acceptable');
    }
}

对于accept函数,它看起来像'el'变量是一个用于保存可拖动行的容器,因此它显然不会添加我的类,并且该容器不存在或者在我的onjqstart事件。因此,非常感谢任何有关如何将类分配给正确元素的建议或更好的尝试方法。

1 个答案:

答案 0 :(得分:3)

我想出了如何做到这一点。最好使用before drop函数。在该函数中,如果用户拒绝丢弃,则只需将设置降为false即可。

$('#MyGrid').jqGrid('gridDnD',{
connectWith: '#MyGrid2',
beforedrop: function(evt, ui, data, source, target) {beforejqdrop(evt, ui, data, source, target)},
ondrop: function(evt, ui, data) {onjqdrop(evt, ui, data)},
dropbyname: 'False',
droppos: 'first',
autoid: 'True',
autoidprefix: 'dnd_',
dragcopy: 'False'});

function beforejqdrop(evt, ui, data, source, target) {
    if (!confirm('is it ok to drop it?')) {
        ui.helper.dropped = false;
    }
}