J'ai quelques problèmes en obtenant l'ID correct de la ligne de table sélectionnée dans Datatable. L'alerte que j'utilise pour voir ce qui revient du script JS n'affiche que le même ID de la première ligne sélectionnée, quel que soit le nombre de lignes dans la liste du tableau et bien sûr l'ID de chacun est toujours différent (de Mysql). Déroutant. Même en rafraîchissant, c'est toujours le même. Il doit y avoir un petit bogue dans mon code. Un indice? C'est ici:

Sortie de ligne PHP via l'encodage JSON:

$query = $mysqli->query($sql) or die;
        $data = array();
        // fetch data as array
            while($row = $query->fetch_array()) { 

                $nestedData=array(); 

                $nestedData[] = $row["email"];
                $nestedData[] = $row["ipv4"];
                $nestedData[] = $row["created"];
                // $nestedData[] = '<a class="delete" href="#"><i class="fa fa-trash-o"></i></a>';
                $nestedData[] = '<button type="button" class="delbtn btn btn-danger btn-xs" data-id="'.$row['id'].'">Delete</button>';
                $nestedData[] = '<a class="btn btn-info btn-xs" href="newsModal.php?id='.$row['id'].'" data-toggle="modal" data-target="#newsModal" edit-id="'.$row['id'].'">Edit</a>';

                $data[] = $nestedData;
    }

Jquery:

$('#delbtn').click( function () {
    if ( $('tr.selected').hasClass('selected') ) {
        var id = $('td button[type=button]').attr('data-id');
        var data = {'id': id };
        alert(id);
        // $.ajax({...

table selected delete

            <div class="panel-body">
            <button type="button" id="reloadbtn" class="btn btn-default">Refresh</button>
            <button type="button" id="printbtn" class="btn btn-primary">Print</button>
            <button type="button" id="delbtn" class="btn btn-danger">Delete</button>
        </div>

        <div class="panel-body">
            <div class="table-responsive">

          <table id="tablenews" class="display compact table table-striped table-bordered table-hover ">
            <thead>
                <tr>
                  <th>E-Mail</th>
                  <th>IPv4</th>
                  <th>Created</th>
                  <th></th>
                  <th></th>
                </tr>
          </thead>

table code

problème de table JSfiddle

2
what_me 17 janv. 2017 à 07:58

2 réponses

Meilleure réponse

Peut-être que cela aide:

   $(document).ready(function() {
    var table = $('#example').DataTable();

    $('#example tbody').on( 'click', 'tr', function () {
        if ( $(this).hasClass('selected') ) {
            $(this).removeClass('selected');
        }
        else {
            table.$('tr.selected').removeClass('selected');
            $(this).addClass('selected');
        }
    } );

    $('#button').click( function () {
        if ( $('tr.selected').hasClass('selected') ) {

      var id = $('tr.selected button.delbtn').attr('data-id');
      var data = 'id=' + id ;
      alert(id);

      // $.ajax({
                         // type: "POST",
                         // url: "newsdelrow.php",
                         // data: data,
                         // cache: false,
                         // success: function(response) { 


                         // alert(response);

                        // }
                    // });

        // table.row('.selected').remove().draw( false );

     }else { alert('Please select a table row first'); }

    } );

    $("#example tbody").on('click', '.delbtn', function(){

                var id = $(this).attr('data-id');
                var data = 'id=' + id ; //  var data = {'name': name } can be used instead

                 alert(id);

    });
} );
1
Takács Botond 18 janv. 2017 à 09:13

Vous pouvez essayer comme ceci:

     $('#button').click( function () {
        if ( $('tr.selected').hasClass('selected') ) {
          alert($('tr.selected button.delbtn').attr('data-id'));
        }
        else { 
          alert('Please select a table row first'); 
        }
     });
1
Zeeshan Mahboob 18 janv. 2017 à 05:22