2016-12-09 4 views
2

Ich benutze jQuery DataTable für Produktkategorien Tabelle Dafür muss ich verschachtelte Kategorien nach Tiefe der Kategorie Knoten zeigen.Datatable auf Sortieränderung Spalte Rendering-Option

z.B.

  • Parent1
    • Child1
    • Child2
  • parent2
    • Child3
      • Child4
    • Child5

hier habe ich zwei Hauptkategorien Parent1 und parent2 wo diese beiden auch Kinder Kategorien unter ihnen haben und auch unter ihnen ihre Childs. Kategorie Tabelle zeigen, wie Wordpress + WooCommerce

Ich habe so etwas wie dieses

$("#category-listing-table").DataTable({ 
    processing: true, 
    serverSide: true, 
    "ajax": "/categories", 
    "columns": [ 
     { "data": "id", orderable: false, searchable: false }, { 
      "data": "name", 
      "render": function(data, type, row) { 
       var html = ""; 
       for (i = 1; i <= row.depth; i++) { html = html + "<strong>-</strong>&nbsp;"; } 
       html = html + row.name; 
       return [html].join(''); 
      } 
     }, 
     { "data": "action", "orderable": false, "searchable": false } 
    ], 
}) 

jetzt das ist perfekt, Kategorie mit Tiefe 2 werden zwei zeigen getan ‚-‘ in der Spalte des Namens aber wenn ich sort Kategorie mit Namenspalte Ich möchte den Kategorienamen nicht mit '-' anzeigen.

für, dass ich diesen Code

$("#category-listing-table").DataTable({ 
    processing: true, 
    serverSide: true, 
    "ajax": "/categories", 
    "columns": [ 
     { "data": "id", orderable: false, searchable: false }, { 
      "data": "name", 
      "render": function(data, type, row) { 
       var html = ""; 
       for (i = 1; i <= row.depth; i++) { html = html + "<strong>-</strong>&nbsp;"; } 
       html = html + row.name; 
       return [html].join(''); 
      } 
     }, 
     { "data": "action", "orderable": false, "searchable": false } 
    ], 
}).on('order.dt', function() { 
    var order = table.order(); 
    if (order[0][0] === 1) { 
     console.log('I tried so much here but don\'t know what to do now'); 
    } 
}); 

Auf einfach Kategorienamen ohne zeigen Sortierung versucht haben ‚-‘

Antwort

0

So kam ich mit diesem Patch Lösung bis

ich zwei Spalten erstellt haben für den Namen in der Tabelle

  • Eins mit Baumformat
  • Eine weitere
  • ist einfach Kategorienamen (die anfänglich verstecken)

Wenn ich Sortierspalte nenne ich verstecken meine formatierte Spalte und zeigen Spalte mit Basisnamen

var table = $("#category-listing-table").DataTable({ 
    processing: true, 
    serverSide: true, 
    "ajax": "/categories", 
    "columns": [ 
     { "data": "id", orderable: false, searchable: false }, { 
      "data": "name", 
      "render": function(data, type, row) { 
       var html = ""; 
       for (i = 1; i <= row.depth; i++) { html = html + "<strong>-</strong>&nbsp;"; } 
       html = html + row.name; 
       return [html].join(''); 
      } 
     }, { 
      "data": "name", "visible": false 
     }, 
     { "data": "action", "orderable": false, "searchable": false } 
    ], 
}).on('order.dt', function() { 
    /** 
    * Column order information 
    * 
    * order[0][0] column id 
    * order[0][1] column order type 
    * @object 
    */ 
    var order = table.order(); 

    // if the column is name 
    if (order[0][0] === 1) { 
     table.column(1).visible(false); 
     table.column(2).visible(true).order(order[0][1]).draw(); 
    } 
}); 
Verwandte Themen