Перетаскивание строк между таблицами
Идея довольно проста, и она почти работает. Существует две таблицы, и пользователь может перетаскивать строки между двумя таблицами. Когда строка перетаскивается из table1 в table2, ajax используется для обновления базы данных данными, которые удалены из table1, добавлены в table2, и для повторного отображения обеих таблиц с новыми данными. То же самое работает, если информация перетаскивается из таблицы2 в таблицу1.
Вы можете увидеть образец кодаВот.
Вот выдержка из кода Javascript для одной из таблиц:
var startTable = "table1";
var $tabs=$("#" + startTable);
$( "tbody.connectedSortable")
.sortable({
connectWith: ".connectedSortable",
items: "> tr:not(:first)",
appendTo: $tabs,
helper:"clone",
cursor:"move",
zIndex: 999990
})
.disableSelection()
;
$($tabs).droppable({
accept: ".connectedSortable tr",
hoverClass: "ui-state-hover",
drop:function(event, ui){
var start= ui.draggable.attr("id");
var desTable = $(this).attr("id");
if(start != desTable){
alert("The ajax should be called");
}
return false;
}
});
Это работает отлично, за исключением одного случая. Если строка перетаскивается из Таблицы1 в Таблицу2, создается слот, показывающий, куда строка будет вставлена при отпускании строки. Другими словами, если пользователь перетаскивает строку из Таблицы1 в последний элемент Таблицы2, он создает открытый заполнитель (под последней строкой в Таблице2), чтобы отобразить, куда будет идти строка, когда ее отпустят. Есть одна проблема с этим. Если заполнитель создается, но строка затем перетаскивается за пределы таблицы и отпускается, строка по-прежнему переходит к заполнителю, но свойство dragggable никогда не вызывается.
То, что я хотел бы случиться, - это если заполнитель будет создан, независимо от того, куда пропущена строка, он перейдет к заполнителю и вызовет сбрасываемый код, который соответствует таблице, в которую он был помещен. Если места нет -холдер присутствует, строка должна вернуться туда, откуда ее перетащили, и ничего не должно происходить.
Каждый пример, который я пробовал перетаскивать между двумя таблицами, имеет одну и ту же проблему. Ребята, у вас есть какой-нибудь способ вызвать сбрасываемый код, даже если строка отбрасывается за пределы таблицы? Или, может быть, есть лучший способ для вызова ajax, чем когда строка отбрасывается на стол? Любое понимание будет с благодарностью.