Ext4.2+ ext.grid.plugin.rowexpander tem um bug, e o corpo de colapso e o corpo de expansão adicionados não podem ser acionados. Eu verifiquei o código -fonte correspondente a ext.grid.plugin.rowexpander e não adicionei eventos de colapso e expansão. Mesmo que os métodos init e togglerow do ext.grid.plugin.rowexpander sejam reescritos de acordo com o método on -line, os eventos de colapso e expansão não podem ser acionados.
Solução: Adicione os eventos de colapso e expansão ao objeto de grade, depois configure esses dois eventos para a grade e, ao mesmo tempo, reescreva o método togglerow do ext.grid.plugin.rowexpander e acione os dois eventos adicionados pela grade.
O código -fonte do teste é o seguinte:
<! Doctype html public "-// w3c // dtd xhtml 1.0 transitional // pt" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"><html- ponte Content = "Texto/html; charset = gb2312"> <title> Ext4.2+ ext.grid.plugin.rowexpander não pode desencadear o colapso, expandir solução de eventos </title> <link rel = "Stylesheet" type = "text/css" href = "//80) type = "text/javascript" src = "../../ ext-all-debug.js"> </script> <cript> ext.override (ext.grid.plugin.rowexpander, {//mentride para incêndio e/expandbody init: funct) {this.callPans); 'ExpandBody'); // A solução encontrada no fórum Ext, para que os eventos não possam ser adicionados // objeto de grade de armazenamento this.Grid = grade this.grid.addevents ('colapsobody', 'expandbody'); // adicione eventos ao objeto de grade}, togglerow: function (rowx, registro); var = this, this, view = me. my.l, me., me., me., me., me.l), me. Ext.fly (ROWNODE, '_ROWEXPAnder'), nextbd = row.down (me.rowbodytrSelector, true), isCollapsed = row.hascls (me.rowcollapsedcls), addorreremovecls = isCollaPsed? 'removecls': 'addcls', proprietário, linho, fireview; // suspende os layouts por causa de duas visualizações possíveis com sua altura alteração ext.suspendLayouts (); Linha [AddorreremoveCls] (me.rowCollaPsedCls); Ext.fly (nextbd) [addorreremovecls] (me.rowbodyhiddencls); me.RecordSexPanded [Record.internalid] = isCollapsed; View.RefreshSize (); // sincronize a altura e a classe da linha no lado bloqueado se (me.grid.ownerlockable) {proprietáriolock = me.grid.ownerlockable; // fireView = ownerlock.getView (); view = ownerlock.lockedGrid.view; Fireview = donowrlock.lockedGrid.View; RowHeight = row.getHeight (); // extjsiv-9848: No Firefox, o peso de uma linha não pode corresponder // na verdade, é renderizada em altura devido a erros de arredondamento do sub-pixel. Para garantir // as alturas das linhas nos dois lados da grade são iguais, temos que definir // os dois. Row.SethEight (isCollapsed? RowHeight: ''); linha = ext.fly (view.getNode (rowidx), '_rowexpander'); Row.SethEight (isCollapsed? RowHeight: ''); Linha [AddorreremoveCls] (me.rowCollaPsedCls); View.RefreshSize (); } else {Fireview = View; } // Evento de acionamento através da grade, não viewThis.Grid.fireevent (isCollapsed? 'ExpandBody': 'colapsobody', row.dom, registro, nextbd); // a seguir, a solução para o fórum Ext), inválido //fireview.fireeevet, re outoming? // Coalesce demitindo -se devido às mudanças de tamanho de tamanho ext.ResumElayouts (true); },}); // ext.loader.setConfig ({Enabled: true}); ext.onready (function () {ext.quicktips.init (); var store = new Ext.data.store ({Nome: '[{name:' filename ',' string '}, {{{{{{{ {name:'recordDate',type:'string'}, ], data:[ {fileName:'File 1',room:'Conference Room 1',recordDate:'2014-07-03'}, {fileName:'File 2',room:'Conference Room 2',recordDate:'2014-07-03'}, {fileName:'File 3',room:'Conference Room 3 ', registro:' 2014-07-03 '}], AUTOLOAD: TRUE}); console.log ('ext.grid.plugin.rowexpander'); rendermo: ext.getbody (), colunas: [{text: "Nome do arquivo", flex: 1, dataInDex: 'nome do arquivo'}, {text: "sala de conferência", dataInDex: 'Room'}, {text: "Data de gravação", renderizador: ext.util.format.datenderser ('ym-date'), data ", renderer: ext.util.format.datendender ('ym-dra) 300, plugins: expansor, dobrável: true, animCollapse: false, título: 'expansor linha em uma grade dobrável', iconCls: 'icon-grid'});}); </script> </head> <body id = "docbody"> </body </html>