2016-06-10 18 views
0

Ich benutze datatables Server-Seite und ich habe ein Problem, wenn ich eine Server-Seite Daten mit Spaltenfilter suchen, da der Renderwert nicht mit dem Datenbankfeld Wert übereinstimmt. Zum Beispiel: In meiner Datenbank habe ich 0 und 1 in der Statusspalte. Und in meinem Datatable zeige ich die Statusspalte mit einem Render an, um das zu erhalten: wenn Status = 0 dann werde ich disabled anzeigen und wenn ich 1 habe, werde ich enabled anzeigen.Jquery Datatables Filterung mit render

Hier ist ein Ausschnitt aus meinem Code:

$(document).ready(function() { 

/* ----------------------------------------------------- */ 
/* ----------------- DATATABLES HISTORY ---------------- */ 
/* ----------------------------------------------------- */ 

$('#historyTable').DataTable({ 
    dom: "t<'col-sm-5'i><'col-sm-7'p>", 
    autoWidth: true, 
    aaSorting: [[1, 'asc']], 
    serverSide: true, 
    lengthChange: false, 
    ajax: { 
     url: 'history', 
     method: 'POST' 
    } 
    columns: [ 
     {data: "id"}, 
     {data: "name", orderData: [ 1, 0 ]}, 
     {data: "status", render: renderStatus, orderData: [ 2, 0 ]} 
    ] 
}); 

var historyTable = $('#historyTable').DataTable(); 

// Render status 
function renderStatus(data, type, dataToSet){ 
    if(dataToSet.status == '1'){ 
     return "enabled"; 
    }else{ 
     return "disabled"; 
    } 
} 

// Global search 
$('#historySearch').on('keyup', function(){ 
    historyTable.search($(this).val()).draw(); 
}); 

// Length menu 
$('#historyMenu').on('change', function(){ 
    historyTable.page.len($(this).val()).draw(); 
}); 

// Setup - add a text input to each footer cell 
$('#historyTable tfoot td').each(function() { 
    var title = $('#historyTable tfoot td').eq($(this).index()).text(); 

    $(this).html('<input type="text" />'); 
}); 

// Apply the search 
historyTable.columns().eq(0).each(function (colIdx) { 
    $('input', historyTable.column(colIdx).footer()).on('keyup change', function() { 
     historyTable 
     .column(colIdx) 
     .search(this.value) 
     .draw(); 
    }); 
}); 

}); 

Wissen Sie, wie kann ich das machen übereinstimmen tun, um Wert mit der Server-Seite Wert?

Antwort

0

Sie können den Namen der Spalten an den Server übergeben:

$('#historyTable').DataTable({ 
    dom: "t<'col-sm-5'i><'col-sm-7'p>", 
    autoWidth: true, 
    aaSorting: [[1, 'asc']], 
    serverSide: true, 
    lengthChange: false, 
    ajax: { 
     url: 'history', 
     method: 'POST' 
    } 
    columns: [ 
     {data: "id", name: "column1_name"}, 
     {data: "name", orderData: [ 1, 0 ], name: "column2_name"}, 
     {data: "status", render: renderStatus, orderData: [ 2, 0 ], name: "column3_name"} 
    ] 
}); 

Ich weiß nicht, wie der Name dynamisch einzustellen.

+0

Warum möchten Sie den Spaltennamen an den Server übergeben? – John