Veröffentlicht 17. Januar 201114 j Hallo Leute, ich habe ein Problem und zwar habe ich ein GridView in meinem Framework, welches sich ExtJS schimpft. Dort werden diverse Daten in gruppenansicht (Groupingstore) hineingeladen und angezeigt. So nun will ich aber andere aktuellere Daten dort angezeigt bekommen, nur die Frage ist wie aktualisiere, update oder refreshe ich diese Tabelle? Dieses Framework ist sehr umfangreich und kompliziert. Danke im Voraus
17. Januar 201114 j Du sagst der Tabelle via JS, dass sie sich refresh()'en soll. Zuvor hast du dich auf das Event 'beforerefresh' registriert, in dem dem du dann den Store via Ajax aktualisierst.
18. Januar 201114 j Viele Dank erstmal Ja das mit dem Refresh hab ich schon in der API gelesen nur ich weiss nicht wie ich das anwende. ich bin totaler ExtJS Neuling:( Hier ist einmal der DataStore: aktuell_DataStore = new Ext.data.GroupingStore({ groupOnSort: true, //Verbindung zu der database.php herstellen, da diese Datei die Daten anfordert proxy: new Ext.data.HttpProxy({ url:'database.php', method: 'GET', timeout:9000000 }), baseParams:{ip: ip_num, dataToshow: data_show, task: "GETALL"}, autoLoad: true, //Ein Parser, der die gelieferten Daten unterteilt und in Bereiche aufteilt reader: new Ext.data.JsonReader({ root:'results', totalProperty:'total', id: 'id' },[ {name: 'hostname', type:'string', mapping:'hostname'}, {name: 'ipv4_addr', type:'string', mapping:'ipv4_addr'}, {name: 'ipv6', type:'string', mapping:'ipv6'}, {name: 'ondemand', type:'string', mapping:'ondemand'}, {name: 'command', type:'string', mapping:'command'}, {name: 'datetime', type:'string', mapping:'datetime'}, {name: 'profile', type:'string', mapping:'profile'}, {name: 'description', type:'string', mapping:'description'}, {name: 'result', type:'string', mapping:'result'} ]), //Das Feld datetime ist die aktivierte Spalte die angezeigt wird, wenn der Geraetetab offen ist sortInfo: {field: 'datetime', direction: "ASC"}, groupField: 'datetime' }); und hier einmal das Grid: aktuell_ListingEditorGrid = new Ext.grid.GridPanel({ monitorResize:true, id: 'aktuell_ListingEditorGrid', store: aktuell_DataStore, cm: aktuell_ColumnModel, anchor:'100% 90%', viewConfig: {forceFit:true}, plugins: [expander,new Ext.ux.grid.GridFilters({ //Im Menue des Spaltennamens wird ein Filter implementiert filters:[{type: 'string', dataIndex: 'datetime'}, //der nach einem eingegebenen Datum Filter {type: 'string', dataIndex: 'command'}, {type: 'string', dataIndex: 'ondemand'}] })], loadMask:true, listeners:{ render: function(aktuell_ListingEditorGrid){ aktuell_ListingEditorGrid.loadMask.show(); }, delay : 100, single : true }, renderTo: document.body, columnLines: true, view: new Ext.grid.GroupingView({ startCollapsed: true, forceFit: true, groupTextTpl:'{text} ({[values.rs.length]} {[values.rs.length > 1 ? "Items" : "Item"]})' }), Wo muss ich jetzt was machen? o.O
18. Januar 201114 j Schau dir mal das Beispiel unter http://dev.sencha.com/deploy/dev/examples/grid/binding-with-classes.js an. Vielleicht reicht dir ja bereits der Aufruf: Ext.StoreMgr.get('gridBookStore').load(); Wobei, du noch die storeId setzen und anpassen must. Oder du probierst es mit: aktuell_DataStore.load(); Du kannst das ganze periodisch in einem Interval machen oder über ein Element auslösen. Vielleicht must du auch bei wiederholten Aufrufen die reload-Methode des Stores benutzen (siehe http://dev.sencha.com/deploy/dev/docs/output/Ext.data.Store.html).
18. Januar 201114 j ok gut ich hab das jetzt eingefügt an der stelle wo ich es haben möchte. jetzt hab ich nur noch ein kleines problem und zwar wie bekomme ich jetzt meine ermittelten daten aus der datenbank in die tabelle? übrigens reload habe ich gestern ebenfalls versucht nur bei mir hat es nicht geklappt und heute wo du es sagst geht es :S. hm naja aufjedenfall muss ich doch die daten aus der DB als paramter an die load bzw reload funktion übergeben oder?
18. Januar 201114 j hm naja aufjedenfall muss ich doch die daten aus der DB als paramter an die load bzw reload funktion übergeben oder? Das Reload sollte deinen Store aktualisiert haben. Jetzt sollte da Update deiner UI via refresh() den Rest erledigen.
18. Januar 201114 j kannst du mir das ein meinem code zeigen wo ich das platzieren muss bzw wie die anweisung lautet. refresh macht sinn aber ich weiß nicht mit was ich das in verbindung bringen soll. muss ich das so machen: Ext.StoreMgr.get('aktuell_DataStore').refresh(); oder wie?
18. Januar 201114 j der sagt das das keine funktion ist. ich muss vor dem aktuell_listingeditorgrid noch was schrieben. i-wie komponenten oder so dann geht das glaub cih
18. Januar 201114 j das mit getview() bringt nichts weil er das aktuell_listingeditorgrid allgemein nicht kennt. somit kann er auch nicht drauf zugreifen. er refresht die tabelle also lädt irgendwas aber übernimmt keine werte zwei infos noch: 1. ich will das datastore und das grid aus einer anderen datei refreshen 2. die daten aus der DB liegen mir als json codierte daten vor und die ermittelten daten muss ich doch i-wie an das datastore wieder übergeben
18. Januar 201114 j Mach dir mal Gedanken zu den Themen Gültigkeitsbereiche, Objektorientierung und Referenzen.
18. Januar 201114 j das ist mir schon klar aber es muss trotzdem möglich sein das store aus einer anderen datein zu aktualisieren. ich meine im grunde genommen lädt er die sachen ja neu nur wenn ich die ermittelten daten nirgends übergebe wie soll er sie dann anzeigen?^^
18. Januar 201114 j Du erzeugst ein Store-Objekt. Dieses kann dazu genutzt werden die Daten zu aktualisieren (neu einlesen). Die View hält eine Referenz auf dieses Objekt und wird gerendert. Ändert sich das Model (der Store), muss die View neu gerendert werden. Wird keine Referenz gehalten, sondern eine Kopie, erfolgt vor dem erneuten Rendern eine Zuweisung des neuen Stores. Du kannst dein Panel als globale Variable anlegen, entweder direkt unter document oder an ein beliebiges Objekt hängen.
19. Januar 201114 j kannst du mir das anhand meines oben geposteten quellcodes zeigen wo ich das objekt erzeugen muss. ich hab kaum erfahrung mir dem framework deswegen frage ich soviel nach. ich hab ein großes problem damit zu verstehen wie ich die neu ermittelten daten jetzt an den datastore übergebe, weil wenn ich den datastore nur neu lade also mit .load() dann hat er ja immernoch nciht die ermittelten daten. die liegen ja immernoch in einer variable bei mir. ich übergebe einen wert an eine datenbank php worauf mir dann werte aus der datenbank geliefert werden. die gelieferten werte sind in der variable content enthalten und jetzt will ich sie wie schon erwähnt in das grid bekommen, wo allerdings schon werte enthalten sind. if (window.XMLHttpRequest) { xmlhttp=new XMLHttpRequest(); xmlhttp.open("POST","database.php",true); xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xmlhttp.send('wert='+searchvalue+'&dataToshow='+data_show+'&task=SEARCHING'); xmlhttp.onreadystatechange = interpretRequest; var content = xmlhttp.responseText;
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.