Comment supprimer la ligne courante avec le plugin jQuery datable

j'ai une colonne avec des boutons dans une table j'utilise le plugin jQuery datatable. Les boutons "Supprimer" et l'idée est que lorsque vous cliquez sur ce bouton, il supprime la ligne courante dans le tableau.

Lorsque j'appelle fnDeleteRow il semble que cela fonctionne la première fois, mais pas plus de temps pour cette rangée donc il semble que cela ne supprime pas vraiment la rangée correctement.

29
demandé sur Sam 2009-12-18 06:56:10

5 réponses

essaye ceci:

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

si cela ne fonctionne pas, cochez la case exemple

61
répondu Jason Orendorff 2015-07-03 11:38:07

supposons que vous attachiez une fonction à appeler lorsque l'utilisateur clique sur le bouton. La fonction serait quelque chose comme ceci

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(); 
}
2
répondu Sridhar 2009-12-18 04:48:47

Que Diriez-vous de ceci:

    // Delete Row
    $('.glyphicon-minus').on("click", function() {
        configTable.row($(this).closest("tr").get(0)).remove().draw();
    });
1
répondu Ryan Reynolds 2014-10-03 22:07:16

cette page:

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

    //...
} );
0
répondu cobbal 2009-12-18 04:27:23

C'est comment cela fonctionne pour moi. Dans la fonction document ready j'assigne la version convertie de la table HTML à une variable et quand un bouton dans le est cliqué je passe par parents/childs avec JQuery et j'envoie la ligne que vous obtenez comme paramètre à la fonction fnDeleteRow() de la bibliothèque.

Voici les commentaires de la fonction bibliothèque. Et un exemple qui est mentionné dans la bibliothèque.

/**
* 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);
});
0
répondu Cengiz Araz 2016-03-21 17:08:05