2016-05-13 11 views
0

Auf meiner Benutzeroberfläche habe ich ein Raster, in dem ich Filter auf Spalten anwende und gefilterte Daten erhalte. In meinem REST Anfrage, meine UI sendet Filter als Schlüssel: Wert wie folgt aus:So extrahieren Sie Filter aus dem BufferedGrid-Objekt in EXTJS

filter:[{"operator":"gt","value":222,"property":"qty_raw"}] 

und ich die gleichen Filterdaten aus dem gleichen Raster (mit ComponentQuery) extrahiert werden soll, so dass ich die gleiche schicken Filter/Filter (mehr als eine Spalte) in einem anderen Antrag auf eine Schaltfläche Click-Handler, I-Code schreibe wie dies in EXTJS,

var gridObj = Ext.ComponentQuery.query('myGridId')[0]; 
var filters = gridObj.store.getFilters(); 
console.log("print filters.....",filters); 

Filter in Chrome Werkzeug sieht wie folgt aus Snapshot, wo die Daten, die ich brauche, ist in Items und Karte, aber ich kann nicht auf die Daten zugreifen. Ich weiß nicht, ob es einen besseren Weg dafür gibt? irgendwelche Vorschläge?

filters collection as shown on chrome developer tool

Update: Ich habe versucht, es zu benutzen Speicher lastOptions Eigenschaft zu tun, ist es immer noch nicht funktioniert (Fehler: Uncaught Typeerror: kann Eigenschaft 'params' undefinierter lesen)

 var gridObj = Ext.ComponentQuery.query('Grid_xx')[0]; 
    var lastOptions = gridObj.store.lastOptions, 
    lastParams = Ext.clone(lastOptions.params); 
    lastParams.limit = limit; //;var limit = gridObj.store.getTotalCount(); 
    lastParams.page = page; // var page = 1 
    lastParams.start = start; // var start= 1 
    lastParams.columnsNameArray = JSON.stringify(columnsNameArray); 
    console.log("columnArray............ =",lastParams.columnsNameArray); 
    var encodedFilename = Ext.urlEncode(lastParams); 
    Ext.create('Ext.Component', { 
     renderTo: Ext.getBody(), 
     //url: EfwSlamUI.Config.restUrl.GridExport, 
     cls: 'x-hidden', 
     params: lastParams, 
     autoEl: { 
      tag: 'iframe', 
      src: Abc.Config.restUrl.GridExport + '?' + encodedFilename} 
}); 

Antwort

0

Ein Vorschlag:

Ich denke, ein besserer Ansatz wäre die Verwendung der Funktion store.reload(), da automatisch die letzten Parameter verwendet werden, die von der letzten Speicheranforderung verwendet wurden.

https://docs.sencha.com/extjs/6.0/6.0.0-classic/#!/api/Ext.data.BufferedStore-method-reload

können Sie die auf dem Gitter oder speichern Filter/Sorter ändern.

https://docs.sencha.com/extjs/6.0/6.0.0-classic/#!/api/Ext.data.BufferedStore-property-lastOptions

Wenn Sie Auto-Reload des Gitters will verhindern, wenn ein Filter geändert wird, deaktivieren autoload des Ladens.

+0

meine andere Anfrage sendet Schlüssel: Wert Paare Objekt als URLEncoded Parameter. Ich bin mir nicht sicher, wie man die key: value-Paare aus der bereits geladenen BufferedGrid (gefilterten) Anfrage extrahiert, mein Button-Klick-Ereignis findet statt, nachdem alles auf dem Bildschirm geladen wurde und dann habe ich eine requestMapping-Methode in SpringMVC, die die Schlüssel: Wert-Paare enthält kommen in Anfrage und senden Excel-Datei an die Benutzeroberfläche. Ich habe meine Qus mit Code aktualisiert, den ich erneut mit Ihrem Vorschlag versucht habe, aber es funktioniert nicht. – Jammy

Verwandte Themen