2016-08-30 2 views
2

Ich habe eine Datentabelle mit Ajax-Verarbeitung.Ich habe ein Kontrollkästchen in jeder Zeile für mehrere delete.And auch ein Kontrollkästchen auf der Oberseite, um alle Kontrollkästchen auf einmal zu überprüfen. Ich muss die geprüften Zeilen kennen und deaktivieren, um zu löschen.Kontrollkästchen in Datatable Ajax Verarbeitung

Zum Beispiel, wenn ich mein Top-Kontrollkästchen automatisch alle Kontrollkästchen in geprüft Code ändern

$('#select-all').click(function (event) { 
     if (this.checked) { 
      // Iterate each checkbox 
      $(':checkbox').each(function() { 
       this.checked = true; 
      }); 
     } else { 
      $(':checkbox').each(function() { 
       this.checked = false; 
      }); 
     } 
    }); 

Aber es Wirkung nur für die aktuelle Seite ich mehr als 3000 pages.What haben werde ich tun?

JS für serverseitige Verarbeitung

var dataTable = $('#example2').DataTable({ 
     processing: true, 
     serverSide: true, 
     ajax: "?p=online_user_ajax" // json datasource 

    }); 

JSON Rückkehr ist wie dieser

$i = 1; 
while ($row = mysql_fetch_array($query)) { // preparing an array 
$actions = '<button class="btn btn-small btn-edit" id="edt_user" ></button>'; 
$checkbox = '<input type="checkbox">'; 
$nestedData = array(); 
$nestedData[] = $checkbox; 
$nestedData[] = $i; 
$nestedData[] = $row["email"]; 
$nestedData[] = $row["mobile"]; 
$nestedData[] = $row["first_name"]; 
$nestedData[] = $row["last_name"]; 
$nestedData[] = $actions; 

$data[] = $nestedData; 
$i++; 
} 
$json_data = array(
"draw" => intval($requestData['draw']), // for every request/draw by clientside , they send a number as a parameter, when they recieve a response/data they first check the draw number, so we are sending same number in draw. 
"recordsTotal" => intval($totalData), // total number of records 
"recordsFiltered" => intval($totalFiltered), // total number of records after searching, if there is no searching then totalFiltered = totalData 
"data" => $data // total data array 
); 

echo json_encode($json_data); // send data as json format 

Zum besseren Verständnis habe ich zwei Bilder am Hinzufügen

Ankreuzfelder überprüft, wenn ich oben Checkbox klicken

All checkboxes are checked

Ankreuzfelder deaktiviert ist in der zweiten Seite

Checkboxes are unchecked

Wenn Sie eine Idee haben, dieses Problem bitte helfen zu erholen.

+0

geprüft werden Sind Sie Ajax Paginierung verwenden? –

+0

Ja, es ist serverseitige Daten mit Ajax (nur 10 Zeilen gleichzeitig anzeigen) –

+0

Eigentlich ist die Paginierung AJAX ist meine Frage, wenn Sie auf die nächste Seite gehen, wird die Seite neu geladen? –

Antwort

1

Ok Sanooj, versuchen Sie dies: , wenn ein Benutzer klickt auf der nächsten oder vorherigen Taste, dies tun:

$(".page-btn").click(function(){ 
     $('#selectAll').attr('checked', false); 
}) 

Alternate

$(".page-btn").click(function(){ 
     $('#selectAll').prop('checked', false); 
}) 

Lassen Sie uns sagen, dass Ihre nächsten und vorherigen Tasten haben eine gemeinsame Klasse Seite-btn, es wird Ihr Klick erkennen und das oberste Kontrollkästchen deaktivieren, die aktualisiert nicht erhalten, wenn die nächsten/vorherigen Seite Daten geladen werden. Sie müssen dieses Kontrollkästchen aktualisieren, wenn neue Seitendaten geladen werden.

1

Ich würde ein Zuhörer registrieren #selectAll:

$("#selectAll").change(function(){ 
    if ($(this).is(":checked")) { 
     $(".your-class").prop("checked", true); 
    } 
}); 

Auf Seite ändern, lösen das Ereignis

$(".page-change").click(
    $("#selectAll").trigger("change"); 
) 
1

Endlich löste ich das Problem, indem ich den obersten Checkbox-Wert in die Serverseite schickte.

$checkbox='<input type="checkbox">'; 
if (!empty($requestData['columns']['checkbox']['search']['value'])) { 
    $checkbox='<input type="checkbox" checked>'; 
} 
$nestedData = array(); 
$nestedData[] = $checkbox; 
$nestedData[] = $i; 
$nestedData[] = $row["email"]; 
$nestedData[] = $row["mobile"]; 
$nestedData[] = $row["first_name"]; 
$nestedData[] = $row["last_name"]; 
$nestedData[] = $actions; 

Also, wenn die obere Checkbox aktiviert alle anderen Kontrollkästchen wird

Verwandte Themen