Отмена перетаскивания между JQGrids - PullRequest
2 голосов
/ 31 января 2012

У меня есть требования запрашивать подтверждение у пользователя при перетаскивании строки между сетками.В настоящее время я пытаюсь присвоить классу «приемлемый» строку, если подтверждением является «да», а затем установить 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 Ответ

3 голосов
/ 08 февраля 2012

Я понял, как это сделать. Лучше использовать функцию 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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...