2012-04-10 18 views
2

Ich habe eine Tabelle mit Informationen, die ich aus dem Suchfeld ausschließen möchte. Zum Beispiel in einer der Spalten habe ich einen Text und dann Links, sieht es wie folgt aus:DataTables - Hinzufügen von Filterfunktion zu einer Spalte

<td> 
    <div>John Doe</div> 
    <div> 
    <a href="/usr/johndoe/view">View</a> | 
    <a href="/usr/johndoe/edit">Edit</a> | 
    <a href="/usr/johndoe/delete">Delete</a> 
    </div> 
</td> 

Of-Kurs in diesem Fall würde ich das Suchfeld mag nur „John Doe“ als Text zu betrachten gesucht werden.

Ich zeichne meine Tabelle in PHP (ich benutze Symfony-2) und wenden Sie das DataTable-Plugin mit DataTable-Funktion mit jQuery. Ich habe den Eindruck, dass das, was ich will, möglich ist, aber es nicht geschafft hat. Andere Diskussionen wie http://www.datatables.net/forums/discussion/255/customising-the-way-the-filter-works/p1 haben mir nicht geholfen, dieses Problem zu lösen.

Danke!

+0

Was möchten Sie genau passieren? –

Antwort

0

Ich bin sicher, dass es Möglichkeiten gibt, die eigentliche Suchfunktion anzupassen (Sie könnten den Typ für die Spalte mit mDataProp angeben und dann eine custom filter für diesen Typ schreiben?).

Aber eine andere Möglichkeit ist, dass Ihr PHP-Skript nur den Namen liefert: John Doe. Dies sind die ursprünglichen Daten für die Zelle.

Verwenden Sie dann in Ihren Spaltendefinitionen fnRender(), um die Zelle mit dem Layout Ihrer Frage zu formatieren - und lassen Sie den Namen automatisch analysieren, um die gewünschten Verknüpfungen zu erstellen (vorausgesetzt, alle Namen sind zuerst und zuletzt und alle) Links verwenden nur die kombinierten Vor-/Nachnamen, dies sollte relativ einfach zu implementieren sein).

Dann bUseRendered auf false für diese Spalte und es wird alle seine Sortierung und Filterung auf den ursprünglichen Inhalt, nicht den neuen Inhalt. See more here.

+0

Großartig, danke. Eine Frage - Ich brauche einige Argumente für das Rendering (wie userId, username etc ...) - jede Idee, wie kann ich dieses Problem lösen? – guyaloni

+0

Wenn Sie einfach so etwas wie im Beispiel übergeben ('fnRender (o) {}'), dann sollten Sie etwas wie 'o.aData [idx] 'aufrufen können, wobei' idx' der zero-basierte Index ist der Spalte, die die Daten enthält, die Sie analysieren möchten. So könnten Sie zum Beispiel so etwas wie 'var content = o.aData [1] + 'View';' und dann 'return content;'. Das würden Sie "John Doe View" in Ihrer Zelle geben. Ist das sinnvoll/beantworten Sie Ihre Frage? – mbeasley

+0

Nun, es ist nicht, weil mein Beispiel nicht vollständig ist. Um es klarer zu machen, sagen wir, dass die URL auch eine Benutzer-ID enthalten sollte, die nicht aus der Spalte abgerufen werden kann, da sie nicht angezeigt wird: 'View' (es gibt mehr Parameter, aber die Idee ist dieselbe). Ich kann ein Array mit Benutzernamen als Schlüssel und dann den Rest der Informationen, die ich brauche generieren, aber es ist ziemlich hässlich ... lieber eine bessere Lösung haben, die ich sicher bin, dass es existiert .. – guyaloni

Verwandte Themen