2017-09-18 7 views
1

J'ai un slickgrid avec ce plugin de filtrage:plugin tableur Slickgrid clair tous les filtres

https://github.com/danny-sg/slickgrid-spreadsheet-plugins/blob/master/ext.headerfilter.js

Ceci est la méthode claire pour chaque colonne:

 $('<button>Clear</button>') 
      .appendTo($menu) 
      .bind('click', function (ec) { 
       //alert(JSON.stringify(columnDef)); 
       // console.log($menuButton.data("column")); 
       // alert($menuButton.data("column").id); 
       columnDef.filterValues.length = 0; 
       setButtonImage($menuButton, false); 
       handleApply(ec, columnDef); 
      }); 

Je veux faire un bouton la page qui efface tous les filtres et réinitialise les images des boutons. J'ai jusqu'ici, mais je suis coincé:

$("#clearallfilters, #clearallfilters-sm").click(function() { 
    for (var filcolumn in grid.getColumns()) { 
    filcolumn.filterValues.length = 0; 
    //then change all pictures 
    } 
}) 

Je suppose que je dois faire une boucle à travers les colonnes et 0 les FilterValues ​​mais ne pas pour la vie de me savoir comment faire cela.

Répondre

2

je le fais comme cela, vous devez réinitialiser la colonne parce que c'est où sont stockés filervalues ​​

var clearcolumns = grid.getColumns(); 
for (var i = 0; i < clearcolumns.length; i++) { 
if (clearcolumns[i].filterValues !== undefined) { 
    delete clearcolumns[i].filterValues; 
} 
} 
grid.setColumns(clearcolumns); 
dataView.refresh(); 
grid.render();enter code here 
+0

Michael remerciements très soigné. Il change aussi l'icône du filtre à la flèche par défaut, ce qui est génial. – matt9292