2017-05-15 5 views
1

als von hier https://datatables.net/manual/plug-ins/search Ich möchte ein Suchplugin schreiben, aberjquery Tables Sucherweiterung Zugang Spalteninformationen

  1. ich es basierend auf Schlüssel arbeiten will ich in columns:[], in meinem Beispiel definieren unter customSearch
  2. Aktuelle Vorschlag zeigt, dass Spalte zu hart codiert muss, in Beispiel unten searchData[3]) || 0; // using the data from the 4th column

Ziel: 1. wenn das Schreiben eines Plugins, Wie kann ich gezielt eine Spalte für die Suche, wenn es in columns:[] Definition

Probe definiert bestimmte Schlüssel hat:

//datatables column definition 
columns:[{ 
    data:"id", 
    title:"ID", 
    customSearch:"custom" 
}] 
// writing a search plugin 
$.fn.dataTable.ext.search.push(
    function(settings, searchData, index, rowData, counter) { 
     var age = parseFloat(searchData[3]) || 0; // using the data from the 4th column 
     // this is hard coded. I dont want that. 
     // 
     // 
     // how can I get column information here so I can write a plugin based on 
     var age = parseFloat(rowData[column.data]) ; // dynamically get data 

    } 
); 
``` 

Antwort

1

Sie erhalten die settings Objekt in den Argumenten, so Sie können Spalten mit bestimmten Eigenschaften filtern:

$.fn.dataTable.ext.search.push(
    function(settings, searchData, index, rowData, counter) { 

    var searchColumns = settings.aoColumns.filter(function(c) { 
     return c.customSearch && c.customSearch != undefined 
    }); 
    console.log(searchColumns); 

Jetzt haben Sie eine Reihe von Spalten haben eine customSearch Eigenschaft. Sie können den Index einer Spalte erhalten durch seine idx:

var index = searchColumns[0].idx; 

oder der Datenname Eigenschaft von (Überraschung) Daten:

var dataProp = searchColumns[0].data; 

so könnten Sie zum Beispiel tun

var age = parseFloat(rowData[column[dataProp]]) 
Verwandte Themen