Ext4.2+ ext.grid.plugin.rowexpander tiene un error, y el colapso y el expansión agregado no se pueden activar. Verifiqué el código fuente correspondiente a ext.grid.plugin.rowexpander, y no agregué eventos colapsos y expandidos. Incluso si los métodos init y togglerow de ext.grid.plugin.rowexpander se reescriben de acuerdo con el método en línea, los eventos de colapso y expandir no se pueden activar.
Solución: agregue colapsas y eventos expandir al objeto de cuadrícula, luego configure estos dos eventos para la cuadrícula, y al mismo tiempo reescribe el método Togglerow de ext.grid.plugin.rowexpander, y active los dos eventos agregados por la red.
El código fuente de prueba es el siguiente:
<! Doctype html public "-// w3c // dtd xhtml 1.0 content="text/html; charset=gb2312"><title>Ext4.2+ Ext.grid.plugin.RowExpander cannot trigger collapsebody, expandbody event solution</title><link rel="stylesheet" type="text/css" href="../../resources/css/ext-all.css" rel="external nofollow" /><script type = "text/javaScript" src = "../../ ext-all -debug.js"> </script> <script> ext.override (ext.grid.plugin.rowexpander, {// override to fire collapseBody & expandbody init: function (grid) {this.callparent (argumentos); // grid.getView (). 'expandbody'); // la solución que se encuentra en el foro ext, de modo que los eventos no se pueden agregar // objeto de cuadrícula de almacenamiento this.grid = grid this.grid.addevents ('collapseBody', 'expandbody'); // Agregar eventos a la cuadrícula de la cuadrícula}, togglerow: function (rowIdx, registro) {var me = this, vie Ext.fly (Rownode, '_RowExpander'), nextbd = row.down (me.rowbodytrselector, true), isCollapsed = row.hascls (me.rowcollapsedcls), addorreMoVecls = iscollapsed? 'RemoVeCls': 'adCCls', propietario, Rowheight, FireView; // suspender diseños debido a posibles dos vistas que tienen su cambio de altura ext.suspendLayouts (); fila [addorreMovecls] (me.rowcollapsedcls); Ext.fly (NextBD) [AddorreMoVecls] (me.rowbodyhiddencls); me.RecordSexpanded [Record.InternalId] = isCollapsed; ver.RefreshSize (); // sincroniza la altura y la clase de la fila en el lado bloqueado if (me.grid.ownerlockable) {dueño de la placa = me.grid.ownerlockable; // fireview = dueño de dueño.getView (); ver = dueño de placa.lockedgrid.view; FireView = dueño de placa.lockedgrid.view; rowheight = row.getheight (); // ExtJSIV-9848: en Firefox, la vida desprevenida de una fila puede no coincidir // en realidad se renderiza la altura debido a los errores de redondeo por subpíxeles. Para asegurar // las alturas de las filas en ambos lados de la cuadrícula son las mismas, tenemos que configurar // ambos. fila.setheight (iscollapsed? rowheight: ''); fila = ext.fly (ver.getNode (RowIDX), '_RowExPander'); fila.setheight (iscollapsed? rowheight: ''); fila [addorreMovecls] (me.rowcollapsedcls); ver.RefreshSize (); } else {FireView = View; } // activar el evento a través de la cuadrícula, no verthis.grid.fireEvent (isCollapsed? 'ExpandBody': 'colapseBody', fila.dom, registro, nextbd); // La siguiente es la solución al foro ext, inválido //fireview.fireEvent(ScOlSapsed? // la colocación de fusiones debido a los cambios en el tamaño de la vista ext.resumelayouts (verdadero); },}); // ext.loader.setConfig ({endabled: true}); ext.onready (function () {ext.quicktips.init (); var store = new ext.data.store ({Fields: [{name: 'FileName', type: 'String'}, {name: 'Room', type: 'String'},,},, {name: 'RecordDate', Tipo: 'String'},], Data: [{FileName: 'File 1', Room: 'Conference Room 1', RecordDate: '2014-07-03'}, {nombre de archivo: 'Archivo 2', sala: 'Sala de conferencias 2', Registro: '2014-07-03'}, {FileName: 'File 3', Rala de conferencias, 'Room', REMORTDATE: '2014-07-03'}, {FileName: 'File 3', Room ', Room', Room ', RoomDate:' 2014-07-03 '}, {FileName:' File 3 ', Room', Room ', Room:' Room date: ' 3 ', RecordDate:' 2014-07-03 '}], autoload: true}); console.log ('ext.grid.plugin.rowexpander'); renderTo:Ext.getBody(), columns: [ {text: "File Name", flex: 1, dataIndex: 'fileName'}, {text: "Conference Room", dataIndex: 'room'}, {text: "Record Date", renderer: Ext.util.Format.dateRenderer('Ym-d'), dataIndex: 'recordDate'} ], width: 600, height: 300, Plugins: Expander, Plegable: True, AnimCollapse: False, Título: 'Expander fila en una cuadrícula colapsible', icOncls: 'Icon-Grid'});}); </script> </head> <body id = "docbody"> </body> </html>