2012-01-30 63 views
2

我有要求在網格之間拖放一行時提示用戶進行確認。目前,我正在嘗試爲該行分配一個「可接受的」類,如果確認爲yes,然後將drop_opts設置爲只接受該類。下面是我的連接聲明和函數進行確認,我已經排除了網格其餘部分的代碼,因爲它沒有必要。取消JQGrid之間的拖放

$('#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'); 
    } 
} 

對於接受功能,它看起來像「厄爾尼諾」變量是用來存放可拖動行的容器,所以它顯然不會添加到它在我的類和容器不存在或爲在我的onjqstart事件中不可用。所以任何有關如何將類分配給正確元素的建議或更好的嘗試方法都將不勝感激。

回答

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; 
    } 
}