2013-09-24 69 views
0

因此,讓我先解釋一下我試圖效仿的東西。在主頁上,有一個包含最近表項的主表。給用戶一組「最喜愛」的文件夾,他們可以從主表中拖放表格行。我沒有拖動整個可見行(我的行非常寬,並且很難確定它將放入哪個文件夾),而是具有「信息」圖標,在這種情況下,它是向上箭頭。用戶可以將圖標拖放到文件夾中,此時應將其從主表格中刪除並附加到該最喜歡文件夾內的表格中。到目前爲止,大部分情況都發生在下面的小提琴中(除了行未從主表中刪除)。使用Datatables後,問題開始顯現。在將該行添加到收藏夾文件夾後,顯然存在,直到您單擊分頁上的下一個和上一個。它消失了。此外,它似乎從未真正成爲表格的一部分,因爲Datatables左下角的信息未更新。顯示3個條目中的1到2,總共可能有4個(用戶拖動的行)。我知道要將行添加到數據表中,您需要 fnAddData,但我不確定如何在此實例中使用它,有什麼想法?預先感謝。小提琴:( 「基本」)。http://jsfiddle.net/YK5fg/4/行在數據表上消失了嗎?

$(".drag").draggable({ revert: "invalid" }); 

       $(".dropTarget").droppable({ 
       drop: function(event, ui) { 
        // fade out dropped icon  
        ui.draggable.hide(); 
        var dropped = parseInt($(this).attr('title')) + 1; 
        $(this) 
        .attr('title',dropped+' entries'); 

        var delay = $(this); 
         delay.prop('disabled', true).addClass('ui-state-highlight') 
         setTimeout(function() { 
          delay.prop('disabled', false).removeClass('ui-state-highlight'); 
         }, 2000) 

         var rowId = ui.draggable.prop("id"); 
         var cloned = $(".basic").find("tr#"+rowId).clone(); 
         $(".fav1table").append(cloned); 
       } 
       }); 

回答

1

可以使用fnAddTr插件http://datatables.net/plug-ins/api添加克隆TR

$(".dropTarget").droppable({ 
drop: function(event, ui) { 
    //ui.draggable.hide(); 
    var dropped = parseInt($(this).attr('title')) + 1; 
    $(this).attr('title',dropped+' entries'); 
    var delay = $(this); 
    delay.prop('disabled', true).addClass('ui-state-highlight') 
    setTimeout(function() { 
    delay.prop('disabled', false).removeClass('ui-state-highlight'); 
    }, 2000); 

     //return the position of the ui.draggable to appear inside the parent row 
     ui.draggable.css({"top":"0px","left":"0px"}); 
     //get the tr dragged 
     var rowId = ui.draggable.parents("tr"); 
     //clone rowId 
     var cloned = rowId.clone(); 
     //make the cloned icon draggable 
     cloned.find(".drag").draggable({ revert: "invalid"}); 
     //add coned tr with fnAddTr 
     $(".fav1table").dataTable().fnAddTr(cloned[0]); 
     //delete rowId with fnDeleteRow add [0] to fix the redraw error 
     $(".basic").dataTable().fnDeleteRow(rowId[0]); 
    } 
});  

http://jsfiddle.net/YK5fg/7/
UPDATE
現在$計數的dataTable ()在使用.fnDeleteRow()和圖標(可拖動)時返回行

+0

很大的進步,但最初的主表分頁沒有更新爲行正在刪除。另外,我可以保留與行的圖標?如果用戶想要繼續將它們移動到不同的文件夾。 – triplethreat77

+1

[http://jsfiddle.net/YK5fg/7/](http://jsfiddle.net/YK5fg/7/)更新了小提琴 –

+0

美麗。幾乎完美。問題是一旦一行被添加到最喜歡的文件夾,並且用戶決定再次移動它(在這個例子中回到主頁),即使行被刪除,最喜歡的表也被追加。我改變了小提琴,以更好地效仿家庭和最喜歡的。 http://jsfiddle.net/YK5fg/8/ – triplethreat77

相關問題