Gibt es irgendwelche event-handler in EXTJS Paging-Toolbar-Buttons?
Ich bin neu mit EXTJS 4 und in diesem forum. Sorry, wenn es schon in einem anderen thread behandelt, aber ich habe es nicht gefunden.
Meine Frage ist, ich will mein Netz-Panel mit Paginierung aktualisieren Sie speichern alle 10 Sekunden. Ich habe eine Lösung gefunden, mit userStore.loadPage(current_page)
, aber es hat ein problem.
Einige Zeit, die Aktualisierung von Grid-Panel fast in der gleichen Zeit mit Benutzer klicken Sie auf "next" oder "prev" in der Paginierung. Dieses make-Grid-Panel funktioniert nicht richtig. Was ich möchte ist, wenn ich auf "next" oder "prev" oder "refresh", der vorherigen Anfrage (userStore.loadPage(current_page)
) ist abgebrochen. So wird es nicht stören, meine aktuelle Anfrage.
Habe ich aber nicht gefunden-Ereignis in EXTJS Paging-Toolbar zu behandeln, "next", "prev" oder "aktualisieren" - button. Was ist die Lösung für dieses Problem? Gibt es eine Möglichkeit?
Dies ist mein code nur für Referenz:
//create User Store
var userStore = Ext.create('Ext.data.Store', {
model: 'EDC',
autoLoad: true,
pageSize: 10,
proxy: {
type: 'ajax',
url : 'Monitoring', //it is using Java servlet, so I write it this way
reader: {
type: 'json',
root: 'edc',
totalProperty: 'total'
}
}
});
//create Grid Panel
Ext.create('Ext.grid.Panel', {
store: userStore,
width: 800,
height: 400,
columns: [
{
text: "ID",
width: 50,
dataIndex: 'id'
},
{
text: 'Serial Number',
flex: 1,
dataIndex: 'sn'
}
//etc...
],
dockedItems: [{
xtype: 'pagingtoolbar',
store: userStore,
dock: 'bottom',
displayInfo: true
}]
});
Es ist, wie es aktualisiert wird alle 10 Sekunden
//after on Ready, reload every 10 seconds
Ext.onReady(function(){
self.setInterval("reloadCurrentEdc()", 10000);
});
//function for update
function reloadCurrentEdc(){
if(typeof userStore != 'undefined'){
userStore.loadPage(userStore.currentPage);
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube, dein problem ist, dass Sie Ihre "auto-load", und Ihr "manuelles laden" sind so nahe beieinander, dass Sie in Ihrem raster Griffe Ergebnis kommen zurück von der ersten Anfrage, als der zweite.
Bin ich einverstanden mit Alshten, dass der beste Weg ist, um vermeiden Anfragen, die sind so nahe zusammen, können Sie dies tun, indem Sie die store laden, wenn es bereits einen store-laden-in-progress. aber wenn Sie möchten, dass Ihre Funktionalität, die ich denke, man kann so etwas wie dieses:
hören
beforeload( Ext.data.Store store, Ext.data.Operation operation, Object eOpts )
Veranstaltung auf speichern, speichern Sie dieeOpts
; hörenload( Ext.data.Store this, Ext.util.Grouper[] records, Boolean successful, Ext.data.Operation operation, Object eOpts )
vergleichen Sie die eOpts mit, die Sie gespeichert, wenn Sie sind nicht das gleiche, wissen Sie, es ist nicht die Ergebnisse, die Sie wollen.Können Sie einen Blick auf die Dokumentation, die über das paging-toolbar-Komponente :
http://docs.sencha.com/ext-js/4-0/#!/api/Ext.toolbar.Paging
Es ist ein
change
das ausgelöst wird, jedes mal, wenn die aktuelle Seite geändert wird, so wird er gefeuert werden für "next" und "prev" klicken Sie auf Ereignisse. Ich habe nicht versucht, aber ich denke, es kann geschossen werden, die für "aktualisieren" ebenso.Meiner Ansicht nach, das beste design wäre zum deaktivieren der Tasten der paging-toobar (mit der
disable()
Funktion dieser Komponente), während der automatische reload laden.Ich verwenden Sie diesen selector: "gridpanel pagingtoolbar #refresh".
Ich bin in der Lage zu verwenden in meinem Controller-Klassen in der init-Methode meistens.
Sie können ersetzen gridpanel mit der alias oder die itemid des Rasters.
Verwenden
pageData ist die Seitenzahl
alle Klicks auf Schaltflächen wie next/prev/refresh auslösen dieser Funktion