Ext4.2 + ext.grid.plugin.rowExpander a un bug, et le corps de l'effondrement et le corps d'agrandissement ne peuvent pas être déclenchés. J'ai vérifié le code source correspondant à ext.grid.plugin.rowExpander, et je n'ai pas ajouté d'événements à Collapsebody and Exandbody. Même si les méthodes init et togglerrow de Ext.Grid.plugin.RowExpander sont réécrites en fonction de la méthode en ligne, les événements Collapsebody et Expandbody ne peuvent pas être déclenchés.
Solution: Ajoutez des événements Fraclapsebody et ExandBody à Grid Object, puis configurez ces deux événements pour Grid, et en même temps, réécrivez la méthode togglerrow de Ext.Grid.Plugin.RowExpander, et déclenchez les deux événements ajoutés par Grid.
Le code source de test est le suivant:
<! Doctype html public "- // w3c // dtd xhtml 1.0 transitional // en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"><html><head><meta http-equiv =" contenu -ype " content = "text / html; charset = gb2312"> <itle> ext4.2 + ext.grid.plugin.rowExpander ne peut pas déclencher à l'effectif, solution d'événement expandbody </ 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> <cript> ext.override (ext.grid.plugin.rowExpander, {// override to Fire Collapsebody & ExpandBody init: function (grid) {this.callparent (arguments); // grid.getview (). 'Expandbody'); // la solution trouvée dans le forum EXT, afin que les événements ne puissent pas être ajoutés // objet de grille de stockage this.grid = grid this.grid.addevents ('Collapsebody', 'expandbody'); // ajouter des événements à l'objet grid}, togglerrow: function (rowidx, enregistrement) {var me. Ext.Fly (Rownode, '_RowExpander'), nextBd = row.down (me.rowbodyTreector, true), isCollapSed = row.hascls (me.rowCollapsedcls), addorreMovecls = isCollapsed? «RemoveCls»: «addcls», propriétaire, RowHeight, Firewiew; // suspendre les dispositions en raison de deux vues possibles ayant leur changement de hauteur Ext.SusPendlayouts (); row [addorreMoveCls] (me.RowCollapSedCls); Ext.fly (nextbd) [addorreMovecls] (me.rowbodyhiddencls); me.recordSExPeded [record.internalid] = isCollapSed; View.RefreshSize (); // synchroniser la hauteur et la classe de la ligne du côté verrouillé if (me.grid.ownerlockable) {propriétairelock = me.grid.ownerlockable; // firEwiew = propriétaireLock.getView (); View = propriétairelock.lockedgrid.view; FireWiew = propriétairelock.lockedgrid.view; RowHeight = row.getheight (); // Extjsiv-9848: Dans Firefox, la surface d'une ligne peut ne pas correspondre //, il est en fait une hauteur rendue en raison d'erreurs d'arrondi sous-pixel. Pour garantir // les hauteurs de lignes des deux côtés de la grille sont les mêmes, nous devons les définir // les deux. Row.Setheight (isCollapsed? RowHeight: ''); row = ext.fly (vue.GetNode (rowidx), '_rowExpander'); Row.Setheight (isCollapsed? RowHeight: ''); row [addorreMoveCls] (me.RowCollapSedCls); View.RefreshSize (); } else {FireWiew = View; } // Trigger Event via Grid, pas Viewthis.grid.fireevent (isCollapsed? 'ExpandBody': 'Collapsebody', Row.dom, Record, NextBd); // Ce qui suit est la solution à l'explandant, invalid //fireview.fireevent(iscollapsed); // fusionner la mise en place en raison des changements de taille de vue Ext.Resumelayouts (true); },}); // ext.loader.setConfig ({activé: true}); ext.onready (function () {ext.quickTips.Init (); var store = new ext.data.store ({fields: [{name: 'filename', type: 'string'}, {name: 'room', type: 'string',,}. {Name: 'RecordDate', Type: 'String'},], Données: [{nom de fichier: 'Fichier 1', Salle: 'Conference Room 1', RecordDate: '2014-07-03'}, {FileName: 'Fichier 2', Room: 'Conference Room 2', RecordDate: '2014-07-03'}, {Fillename: 'File 3', Room: 'Conference Room:' Conference Room: 'Conference Room:' Conference Room: 'Conference Room:' Conference Room: 'Conference Room:' Conference Room: 'Conference Room:' Conference Room: 'Conference Randor 3 ', RecordDate:' 2014-07-03 '}], Autoload: true}); Console.log ('ext.grid.plugin.rowExpander');}}); Renderto: ext.getbody (), colonnes: [{text: "nom de fichier", flex: 1, dataindex: 'filename'}, {text: "conférence", dataindex: 'salle 300, plugins: Expander, pliable: true, animcollapse: false, title: 'Expander rows in a pliable sablen', iconcls: 'icon-grid'});}); </ script> </ head> <body id = "docody"> </ body> </html>