2017-12-01 2 views
1

ich die Datentabellen bin mit Plugin für jQuery aber ich Probleme habe mit der Render-Funktion:JQuery Datentabellen machen mehrere Funktionen

Ich habe eine Zeichenfolge, die einige HTML-Elemente in einer Spalte enthält, ich möchte nicht, die HTML-Elemente in der Tabelle zu machen, so verwende ich die Funktion $.fn.dataTable.render.text()

ich auch nur diese Daten wollen eine Vorschau sein, wie die Zeichenfolge daher unglaublich lange dauern, kann ich ein Auslassungszeichen Funktion bin mit $.fn.dataTable.render.ellipsis(40)

die Ellipsen-Funktion here definiert ist :

// https://datatables.net/manual/data/renderers#Text-helper 
$.fn.dataTable.render.ellipsis = function (cutoff) { 
    return function (data, type, row) { 
     if (type === 'display') { 
      var str = data.toString(); // cast numbers 

      return str.length < cutoff ? 
       str : 
       str.substr(0, cutoff - 1) + '&#8230;'; 
     } 

     // Search, order and type can use the original data 
     return data; 
    }; 
}; 

Wäre es möglich, diese Funktionen in irgendeiner Weise zu kombinieren?

Die nächstgelegene Lösung für mein Problem ist this im Datatables-Forum gefunden. Dies ist genau das, was ich tun möchte, aber es funktioniert nicht, d = renderArray[r](d, type, row, meta); ist keine Funktion.

Vielen Dank im Voraus.

Edit: Table of available renders


Error of function not defined

+0

Check out 'console.table ($ .fn.dataTable.render)' gibt er eine Tabelle der Renderer Sie zur Verfügung haben machen zugreifen können, Ich wette, Sie vermissen einen der Renderer, die Sie verwenden möchten. Fügen Sie hinzu, was Sie vermissen, und ich bin mir sicher, dass es funktioniert. – davidkonrad

+0

@davidkonrad Danke! Beide Renderings arbeiten separat erfolgreich, aber das Problem, das ich habe, ist, dass ich nicht beide auf eine einzelne Spalte anwenden kann. –

+0

Sie verwenden einfach '$ .fn.dataTable.render.multi', wie Sie bereits erwähnt haben, ich habe es in einer Geige ausprobiert (kann leicht eine neue machen) und es ist eine brillante Lösung. Aber es funktioniert nur, wenn alle Renderer vorhanden sind. – davidkonrad

Antwort

0

Die mRender Funktion, um die Daten für die ganze Zeile übergeben. So können Sie jede Eigenschaft, die Sie wollen den Zugriff auf mehrere Funktion Datentabellen

{ 
    mData: "bar", 
    mRender: function(data, type, val) { 
     switch (type) { 
      case 'display': 
       return '<a href="/data/' + data.foo + '">' + data.bar + '</a>'; 
       break; 
      // optionally, add case statements for 'sort', 'filter', and 'type' 
      default: 
       return data.bar; 
       break; 
     } 
    } 
} 
+1

Bitte formatieren Sie den Code richtig. –

Verwandte Themen