webentwicklung-frage-antwort-db.com.de

Wie bekomme ich den Namen der datierbaren Spalte?

Ich verwende DataTable 1.10.9 (von https://datatables.net ). Spalten für die Datentabelle werden beim Initialisierungsschritt in Javascript definiert und jede Spalte hat einen eindeutigen Namen, z. 

var table = $('#example').DataTable({
            columns: [
                { name: 'first-name' },
                { name: 'last-name' },
                { name: 'position' },
                { name: 'location' },
                { name: 'salary' }
            ]
        });

Ich weiß, dass ich die Spalte anhand des Namens, den ich ihr gegeben habe, aus der Tabelle erhalten kann, aber ich finde nicht, wie ich den Namen einer Spalte aus dem Spaltenobjekt finden kann. (Ich hoffe, dass es mit dem aktuellen Status der Komponente möglich ist.) Zum Beispiel:

        table.columns().every(function() {
            //I'd want to see what the name of this column is, something like:
            console.log(this.name()); //will throw an exception since no such function exists
            //or
            console.log(this.name); //will output 'undefined'
        });

Was ist die richtige Funktion oder Eigenschaft, um den Namen dort zu erhalten?

18
Anna T

Sie können die Initialisierungsoptionen über table.settings().init() abrufen - und damit die columns-Definition folgendermaßen:

var columns = table.settings().init().columns;

Wenn Sie auf eine Zelle/<td> klicken, können Sie den Spaltenindex finden (bewährte Methode für ausgeblendete Spalten):

var colIndex = table.cell(this).index().column;

Ein Beispiel für einen Click-Handler, der den entsprechenden column.name benachrichtigt, wenn auf eine Zelle geklickt wird 

$("#example").on('click', 'td', function() {
    //get the initialization options
    var columns = table.settings().init().columns;
    //get the index of the clicked cell
    var colIndex = table.cell(this).index().column;
    alert('you clicked on the column with the name '+columns[colIndex].name);
})

Ihr every()-Beispiel wäre

var columns = table.settings().init().columns;
table.columns().every(function(index) { 
    console.log(columns[index].name);
})  

demo -> http://jsfiddle.net/6fstLmb6/

43
davidkonrad

Folgendes sollte für Sie laut API-Dokument funktionieren:

var tableColumns = [{
    name: 'first-name'
}, {
    name: 'last-name'
}, {
    name: 'position'
}, {
    name: 'location'
}, {
    name: 'salary'
}]

var table = $('#example').DataTable({
    tableColumns
});

table.columns().every(function (index) {

    console.log(tableColumns[index].name);

});
0
James Jithin