2009-12-18 10 views
29

Ho una colonna con pulsanti in una tabella Sto usando il plugin datatable di jQuery. I pulsanti dicono "Rimuovi" e l'idea è che quando si fa clic su quel pulsante si cancella la riga corrente nella tabella.Come eliminare la riga corrente con il plug-in datatable jquery

Quando chiamo fnDeleteRow sembra funzionare la prima volta ma non c'è più tempo per quella riga, quindi sembra che non stia davvero eliminando la riga correttamente.

+0

Ulteriori informazioni. Usi ajax per popolare il tuo datatable o stai convertendo una tabella html statica? Inoltre: perché i dati non sono più precisi? non datatable sposta il tr (e i tag id corrispondenti) su sort? – r00fus

risposta

61

Prova questo:

var row = $(this).closest("tr").get(0); 
oTable.fnDeleteRow(oTable.fnGetPosition(row)); 

Se non funziona, controllare quanto segue example

+1

+1 ma penso che più vicino sarebbe un selettore più appropriato rispetto ai genitori – cobbal

+0

ho fatto passare più vicino, ma dopo che ha funzionato perfettamente. grazie – leora

+0

Perché hai aggiunto .get (0)? Grazie per me. – Shahin

0

da this page:

$('#example tbody td').click(function() { 
    /* Get the position of the current data from the node */ 
    var aPos = oTable.fnGetPosition(this); 

    //... 
}); 
+0

ma sto facendo clic su un pulsante all'interno di una cella di tabella – leora

2

Diciamo che è stato collegato una funzione da richiamare quando l'utente fa clic sul pulsante. La funzione sarebbe qualcosa di simile

function DeleteRow(event) 
{ 
    //get the row of the cell that is clicked 
    var $row = $(this).parents("tr").eq(0) 
    //if you need the id you can get it as 
    var rowid = $row.attr("id"); 
    //now you can call delete function on this row 
    $row.delete(); 
} 
+4

questo non sembra funzionare .. – leora

1

ne dite di questo:

// Delete Row 
    $('.glyphicon-minus').on("click", function() { 
     configTable.row($(this).closest("tr").get(0)).remove().draw(); 
    }); 
0

Questo è il modo in cui funziona per me. Nella funzione pronto per il documento assegno la versione convertita della tabella HTML a una variabile e quando si fa clic su un pulsante, passiamo attraverso i genitori/child con JQuery e inviamo la riga che si ottiene come parametro alla funzione fnDeleteRow() della libreria.

Ecco i commenti dalla funzione di libreria. E un esempio menzionato in biblioteca.

/** 
* Remove a row for the table 
* @param {mixed} target The index of the row from aoData to be deleted, or 
* the TR element you want to delete 
* @param {function|null} [callBack] Callback function 
* @param {bool} [redraw=true] Redraw the table or not 
* @returns {array} The row that was deleted 
* @dtopt API 
* @deprecated Since v1.10 
* 
* @example 
* $(document).ready(function() { 
*  var oTable = $('#example').dataTable(); 
* 
*  // Immediately remove the first row 
*  oTable.fnDeleteRow(0); 
* }); 
*/ 

// And here's how it worked for me. 
var oTable; 
$("document").ready(function() { 
    oTable = $("#myTable").dataTable(); 
}); 

//Remove/Delete button's click. 
$("a[name='deleteColumn']").click(function() { 
    var $row = $(this).parent().parent(); 
    oTable.fnDeleteRow($row); 
}); 
Problemi correlati