2009-12-18 367 views
29

Tengo una columna con botones en una tabla Estoy usando el plugin de tabla de datos jQuery. Los botones dicen "Eliminar" y la idea es que al hacer clic en ese botón, borre la fila actual en la tabla.Cómo eliminar la fila actual con el plugin jquery datatable

Cuando llamo al fnDeleteRow parece que funciona la primera vez pero no hay más tiempo para esa fila, así que parece que en realidad no está borrando la fila correctamente.

+0

Necesita más información. ¿Utiliza ajax para completar su tabla de datos o está convirtiendo una tabla html estática? Además, ¿por qué los datos ya no son precisos? ¿Datatable no mueve el tr (y las etiquetas de identificación correspondientes) en sort? – r00fus

Respuesta

61

Prueba esto:

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

Si esto no funciona, compruebe lo siguiente example

+1

+1 pero creo que el más cercano sería un selector más apropiado que los padres – cobbal

+0

Lo cambié más cerca pero después de eso funcionó perfectamente. .gracias – leora

+0

¿Por qué agregaste .get (0)? Gracias, funciona para mí. – Shahin

0

de this page:

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

    //... 
}); 
+0

pero estoy haciendo clic en un botón dentro de una celda de tabla – leora

2

Digamos que ha conectado una función que se llamará cuando el usuario hace clic en el botón. La función sería algo como esto

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

esto no parece funcionar ... – leora

1

¿Qué tal esto:

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

Así es como funciona para mí. En la función de documento listo, asigno la versión convertida de la tabla HTML a una variable y cuando se hace clic en un botón voy por padres/hijos con JQuery y envío la fila que obtengo como parámetro a la función fnDeleteRow() de la biblioteca.

Aquí están los comentarios de la función de la biblioteca. Y un ejemplo que se menciona en la 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); 
}); 
Cuestiones relacionadas