Ext4.2+ ext.grid.plugin.rowexpander hat einen Fehler, und der Zusammenbruch und der hinzugefügte Explosionsbody können nicht ausgelöst werden. Ich habe den Quellcode überprüft, der ext.grid.plugin.rowexpander entspricht, und habe keine CollapseBody- und Expansion -Ereignisse hinzugefügt. Auch wenn die Init- und Togglerow -Methoden von ext.grid.plugin.rowexpander gemäß der Online -Methode umgeschrieben werden, können die CollapseBody- und ExpectBody -Ereignisse nicht ausgelöst werden.
Lösung: Fügen Sie CollapseBody hinzu und erweitern Sie die Ereignisse in das Grid -Objekt, konfigurieren Sie diese beiden Ereignisse für Grid und schreiben gleichzeitig die Togglerow -Methode von ext.grid.plugin.rowexpander um und lösen Sie die beiden von Grid hinzugefügten Ereignisse aus.
Der Testquellcode lautet wie folgt:
<! DocType html public "-// w3c // dtd xhtml 1.0 transitional // en content = "text/html; charSet = gb2312"> <title> ext4.2+ ext.grid.plugin.rowexpander kann CollapseBody nicht auslösen, Ereignislösung erweitert </title> <link rel = "styleSheet" type = "text/css" href = ". type = "text/javaScript" src = "../../ ext-all-debug.js"> </script> ext.override (ext.grid.plugin.rowexpander, {// Überrede to Fire CollapseBody & ExpinDBody init: function: add. 'explodbody'); // Die im Ext -Forum gefundene Lösung, so dass Ereignisse nicht hinzugefügt werden // Speicher grid -Objekt this.grid = grid this.grid.adDevents ('CollapseBody', 'ExpandBody'). Ext.fly (Rownode, '_rowexpander'), nextbd = row.down (me.rowbodyTrelector, true), iscollapsed = row.hascls (me.rowcollapsedcls), addorremovecls = iscollapsed? 'renovecls': 'Addcls', InhaberLock, RowHeight, FireView; // Layouts durch mögliche zwei Ansichten mit ihrer Höhenänderung ext.uspendlayouts () aussetzen; row [addorremovecls] (me.rowcollapsedcls); Ext.fly (nextbd) [addorremovecls] (me.rowbodyHiddencls); me.recordsexpanded [record.internalid] = iscollapsed; view.refreshSize (); // Synchronisieren Sie die Höhe und Klasse der Zeile auf der gesperrten Seite if (me.grid.ownerLockable) {EigentümerLock = me.grid.ownerLlockable; // fireview = ineroktrock.getView (); view = InhaberLock.lockedGrid.View; fireview = ordnungsgemäß.lockedGrid.View; rowHeight = row.getheight (); // extjiv-9848: In Firefox ist das Offsetheight einer Reihe möglicherweise nicht übereinstimmt // Es wird aufgrund von Subpixelrundungsfehlern tatsächlich die Höhe wiedergegeben. Um sicherzustellen, dass die Zeilenhöhen auf beiden Seiten des Netzes gleich sind, müssen wir beide festlegen. row.seteight (iscollapsed? rowHeight: ''); row = ext.fly (view.getNode (rowIDX), '_rowexpander'); row.seteight (iscollapsed? rowHeight: ''); row [addorremovecls] (me.rowcollapsedcls); view.refreshSize (); } else {fireview = view; }//Trigger event through grid, not viewthis.grid.fireEvent(isCollapsed? 'expandbody' : 'collapsebody', row.dom, record, nextBd);//The following is the solution to the ext forum, invalid //fireView.fireEvent(isCollapsed? 'expandbody' : 'collapsebody', row.dom, record, nextBd); // Verfälle aufgrund von Ansichtsgrößenänderungen ext.Resumelayouts (true); },}; {Name: 'RecordDate', Typ: 'String'},], Daten: [{Dateiname: 'Datei 1', Raum: 'Konferenzraum 1', RecordDate: '2014-07-03'}, {Dateiname: 'Datei 2', Raum: 'Konferenzraum 2', RecordDate: 2014-07-03 '}, {FileName:' Conference 3 ', Raum 34-07-03'}, {{{{{{{{{{{{{{{{fileName: ',' Conference 3 ',' Conference 3 ',' Conference 3 ',' Conference 3 ',' Conference 3 ',' Conference 3 ',' Conference 3 ',' Conference 3 ',' Conference 3 ',' Conference 3 ',' Conference 3 ',' Conference 3 ',',-Zuraum 3: 3 ', RecordDate:' 2014-07-03 '}], autoload: true}); console.log ('ext.grid.plugin.rowexpander'); Renderto: ext.getBody (), Spalten: [{text: "Dateiname", Flex: 1, dataindex: 'Dateiname'}, {text: "Konferenzraum", dataindex: 'raum'}, {text: "record date", renderer: ext.util.format.datererer ('ym-d: ym-d: us), ym-d: 600: 300, Plugins: Expander, zusammenklappbar: true, animcollapse: false, title: 'expander streift in einem zusammenkapseligen Gitter', iconcls: 'icon-Grid'});});