2017-03-08 2 views
1

Ich baue eine Tabelle mit Datatables Abrufen von Werten aus einer Datenbank und möchte Zeilen anzeigen, die unread=true in der Datenbank in bold Text haben. Ich habe keine Möglichkeit gefunden, einen Wert (d. H. Spalte) aus der Tabelle mithilfe von Jquery/JS abzurufen, um eine bestimmte Klasse anzuwenden.Datenwert für CSS-Formatierung abrufen

Kann dies in irgendeiner Weise getan werden? Dies ist mein aktueller Code, der das Problem offensichtlich nicht behebt.

$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) { 
    $.fn.dataTable.tables({visible: true, api: true}).columns.adjust(); 
}); 
var table = $('table.table').DataTable({ 
"processing": true, 
"serverSide": true, 
"ajax": { 
    "dataSrc": "Data", 
    "url": "logsController/getDataTable", 
    "data": { string: $("input.form-control").val() }, 
    "type": "POST" 
     }, 
     "columns": [ 
      { "data": "datetime" }, 
      { "data": "type" }, 
      { "data": "data" } 
     ] 
}); 

$('#myTableLogs').DataTable(); 

console.log(data.unread) oder console.log(data.datetime) beide return "Daten sind nicht definiert"

UPDATE: ich mein Problem gelöst, indem die serverSide entfernen und meinen Code zu ändern. Siehe Antwort unten.

Antwort

0

können Sie die createdRow callback option verwenden, um die Zeilendaten für einen Wert zu testen und eine Klasse in die Zeile dynamisch hinzufügen

var table = $('table.table').DataTable({ 
    "processing": true, 
    "serverSide": true, 
    "ajax": { 
     "dataSrc": "Data", 
     "url": "logsController/getDataTable", 
     "data": { string: $("input.form-control").val() }, 
     "type": "POST" 
    }, 
    "columns": [ 
     { "data": "datetime" }, 
     { "data": "type" }, 
     { "data": "data" } 
    ], 
    "createdRow": function(row, data) { 
     // replace with appropriate reference to your data structure 
     // and CSS class to change font weight 
     if (data.unread) $(row).addClass('text-bold'); 
    } 
}); 
+0

Das sieht gut aus, aber ich bekomme "Daten ist nicht definiert". Ich habe auch versucht, eine einfache 'console.log (data.type);' aber ich bekomme auch "Daten ist nicht definiert". Wie soll das Ergebnis der Funktion abgerufen werden? – remyremy

+0

Funktioniert die Datentabelle ohne die Einstellung "createdRow"? und versagt damit? versuche 'console.log (data)'? Ich vermute, es gibt ein anderes Problem mit Ihrem Tisch. Die Option "serverSide" ist eine sehr fortgeschrittene Einstellung. – abigperson

+0

Ja, meine Tabelle wird korrekt angezeigt, ohne "createdRow" 'zu verwenden und" console.log (data) "gibt auch undefined zurück. Ich benutze 'serverSide', weil meine Daten aus einer MySQL-Datenbank stammen. – remyremy

1

Ich war mir nicht die Serverside heraus erforderlich und inspiriert von this page und createdRow verwenden.

$.ajax({ 
    url: "logsController/getDataTable", 
    method: 'post', 
    dataType: 'json', 
    success: function (data) { 
     var table = $('#myTableLogs').DataTable({ 
      paging: true, 
      sort: true, 
      searching: true, 
      data: data, 
      ordering: true, 
      columns: [ 
       { "data": "datetime" }, 
       { "data": "type" }, 
       { "data": "data" }, 
       { "data": "unread" } 
      ], 
      "createdRow": function (row, data, index) { 
       if (data.unread == 1) { 
         $('td', row).addClass('unread_class'); 
       } 
      } 
     }); 
}); 
Verwandte Themen