2014-07-07 10 views
6

Wie setze ich meine ExtJS Filter in meinen Grids zurück? Genauer gesagt, wie bekomme ich den Header, um die Änderungen an der Filterung zu beachten.Wie setze ich alle Filter in Extjs Grids zurück?

dh. Das funktioniert gut:

grid.store.clearFilter(); 

Aber das Header-Rendering ist alles falsch. Ich muss auf alle Menüobjekte zugreifen und die Kontrollkästchen deaktivieren.

Ich bin ziemlich verloren. Ich bin mir ziemlich sicher, dass dies mir die filterItems gibt:

var filterItems = grid.filters.filters.items; 

Und von jedem dieser Filter Artikel, i wie so zu Menüpunkten bekommen:

var menuItems = filter.menu.items; 

Aber das ist so weit wie ich bekommen kann. Ich erwarte eine Art Checkbox-Objekt in Menüeinträgen, und dann kann ich dieses Kontrollkästchen deaktivieren, und hoffentlich wird sich das Header-Rendering dann ändern.

UPDATE:

ich jetzt diesen Code haben. Der Filterspeicher des Gitterspeichers ist gelöscht. Als nächstes bekomme ich die Filter Items von grid.filters.filters.items und iterieren über sie. Dann rufe ich eine Funktion auf jedem der Menüpunkte auf.

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); 
     }); 
    } 

Die Ankreuzfelder aufgerufen, aber noch ist nichts passiert :(

Antwort

15

diesen Code Versuchen.

grid.filters.clearFilters(); 

Dies sollte beide kümmern uns das Netz und die ihr zugrunde liegenden Speicher

Wenn Sie tun

grid.store.clearFilter(); 

Es kann nur die Filter im Speicher löschen, aber die Ansicht des Rasters wird nicht mit diesem Aufruf aktualisiert. Daher kommt es zu handhaben automatisch sowohl für die Ansicht des Gitters sowie das Geschäft der Gitter, benutzen Sie einfach

grid.filters.clearFilters(); 

Hoffe, es hilft!

Prost!

+1

Dank! perfekt! –

+1

Wir freuen uns, Ihnen behilflich zu sein! Prost! –

0

Ihr Update hilft mir aber Sie vergessen den Fall, wo Sie Text anstelle von Kontrollkästchen eingegeben haben.

Das ist also meine Zugabe von Ihrer Lösung:

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(""); 
      }      
     }); 
    } 
Verwandte Themen