我有一个Web应用程序,您可以将图片拖放到框中。如果你将它放在一个中它会将图片的信息添加到数据表中,如果你向左下方它将从数据表中删除数据。我想知道是否有一种方法可以根据id删除行?
$('#pictures')
.dataTable({
"columnDefs": [{
"orderable": false,
"targets": 1
},
{
"orderable": false,
"targets": 3
}
]
});
var t = $('#pictures')
.DataTable();
$("#left")
.droppable({
accept: ".draggable",
drop: function (event, ui) {
console.log("drop");
$(this)
.removeClass("border")
.removeClass("over");
var dropped = ui.draggable;
var droppedOn = $(this);
$(dropped)
.detach()
.css({
top: 0,
left: 0
})
.appendTo(droppedOn);
var $id = $(this)
.children()
.last()
.attr('id');
var rowId = pictures[id].id;
t.row(pictures[$id].id)
.remove()
.draw(false);
}
});
这显然不是整件事;但是,我认为这足以发现任何问题。
答案 0 :(得分:6)
您可以使用DataTable's API删除相应的行:
t.row("your selector here").remove().draw();
row()
中的您可以使用several kind of selectors。如果您将行的ID保存在变量中,只需使用
即可t.row("#"+rowId).remove().draw();
请注意,您必须在删除后调用draw()
,因为由于性能原因,数据表在删除后不会重绘自身。
答案 1 :(得分:1)
$('#pictures').DataTable().row("#YourRowId").remove().draw();
如果您要删除的项目是父窗口;
window.parent.$('#pictures').DataTable().row("#YourRowId").remove().draw();
如果要删除所有行;
$('#pictures').DataTable().row().remove().draw();
你应该注意JS版本。
答案 2 :(得分:0)
var table1= $('#TableID').DataTable({
"createdRow": function (row, data, dataIndex) {
var rowID = "row_" + data[0];
$(row).attr('id', rowID);
}});
var rowID = "#row_" + any format that follows as per your row ID; table1.row(rowID).remove().draw();
这对每个人都有效。在这里,在 DataTable 构造函数的“createdRow”回调中,您可以在 DataTable 上定义您想要的所有基于数据的样式。我已经定义了一个行 ID,根据第一列的值分配给每一行。