2014-07-07 9 views
6

Come faccio a ripristinare i miei filtri ExtJS nelle mie griglie. Più specificamente, come ottengo l'intestazione per onorare le modifiche al filtro.Come faccio a ripristinare tutti i filtri nelle griglie Extjs?

ie. Funziona bene:

grid.store.clearFilter(); 

Ma il rendering dell'intestazione è tutto sbagliato. Devo entrare in tutti gli oggetti del menu e deselezionare le caselle di controllo.

Mi sto quasi perdendo. Sono abbastanza sicuro che questo mi dà i filterItems:

var filterItems = grid.filters.filters.items; 

E da ciascuno di questi elementi filtranti, posso arrivare a voci di menu in questo modo:

var menuItems = filter.menu.items; 

ma questo è quanto posso ottenere. Mi aspetto un qualche tipo di oggetto checkbox all'interno delle voci di menu, quindi posso deselezionare la casella di controllo, e spero che il rendering dell'intestazione cambierà.

UPDATE:

ora ho questo codice. Il grid store ha cancellato il filtro. Successivamente ottengo i filtri da grid.filters.filters.items e iterato su di essi. Quindi chiamo una funzione su ciascuna voce del menu.

grid.store.clearFilter(); 

    var filterItems = grid.filters.filters.items; 

    for (var i = 0; i<filterItems.length; i++){ 

     var filter = filterItems[i]; 

     filter.menu.items.each(function(checkbox) { 

      if (checkbox.setChecked) 
       checkbox.setChecked(false, true); 
     }); 
    } 

Le caselle di controllo vedono, ma ancora non accade nulla :(

risposta

15

Prova questo codice:.

grid.filters.clearFilters(); 

Questo dovrebbe prendersi cura sia della rete e il suo negozio sottostante

Quando si fa

grid.store.clearFilter(); 

può solo cancellare i filtri nel negozio ma la vista della griglia non viene aggiornata con quella chiamata. Quindi, per gestire in modo automatico per vista sia della rete così come il deposito della griglia, basta usare

grid.filters.clearFilters(); 

Speranza che aiuta!

Cheers!

+1

grazie! perfezionare! –

+1

Felice di essere di qualche aiuto! Saluti! –

0

L'aggiornamento mi aiuta, ma dimentichi il caso in cui hai inserito il testo anziché la casella di controllo.

Quindi questa è la mia aggiunta della soluzione:

grid.filters.clearFilters(); 

    var filterItems = grid.filters.filters.items; 

    for (var i = 0; i<filterItems.length; i++){ 

     var filter = filterItems[i]; 

     filter.menu.items.each(function(element) { 

      if (element.setChecked) { 
       element.setChecked(false, true); 
      } 

      if(typeof element.getValue !== "undefined" && element.getValue() !== "") { 
       element.setValue(""); 
      }      
     }); 
    } 
Problemi correlati