Ext4.2+ ext.grid.plugin.rowexpander имеет ошибку, а коллапс -тело и добавленное тело не могут быть запускаются. Я проверил исходный код, соответствующий ext.grid.plugin.rowexpander, и не добавил события коллапса и разоблачения тела. Даже если методы init и togglerow ext.grid.plugin.rowexpander перезаписываются в соответствии с онлайн -методом, коллапс -тело и события расширения тела не могут быть запускаются.
Решение: Добавьте события коллапса и разоблачить события в сетку, затем настройте эти два события для сетки и в то же время переписывайте метод Togglerow ext.grid.plugin.rowexpander и запустите два события, добавленные Grid.
Исходный код тестирования следующим образом:
<! Doctype html public "-// w3c // dtd xhtml 1.0 transitional // en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> html> content = "text/html; charset = gb2312"> <title> ext4.2+ ext.grid.plugin.rowexpander не может запустить коллапс-тел, решение событий Expandbode </title> <link rel = "stylesheet" type = "text/css" href = "../../ resources/css/ext-all.css" rEmploy "/" /../ ../ csss/ext-all.css "nofloy". type = "text/javascript" src = "../../ ext-all-debug.js"> </script> <script> ext.override (ext.grid.plugin.rowexpander, {// переоценка для обстрела коллапса и Expand Body init: function (grid) {this.callpent (аргументы); grid.getView (). addEvents ('collapsebody', 'expandbody'); // Решение, найденное на форуме EXT, так что события не могут быть добавлены // grid object this.grid = grid this.grid.addevents ('collapsebody', 'ExpandBody'); // Добавить события в grid agem}, togglow: function (rowidx, rocidbody '); // add Events atemy}, togglorow: function (vase) rownode = view.getnode (rowidx), row = ext.fly (rownode, '_rowexpander'), nextbd = row.down (me.rowbodytrsector, true), iscollapsed = row.hascls (me.rowcollapsedcls), AddorReMoveCls = isCollApsed? «RemoveCls»: «AddCls», владелец, Rowheight, FireView; // Приостановка макетов из -за возможных двух просмотров, имеющих их изменение высоты ext.suspendlayouts (); row [AddorReMoveCls] (me.rowcollapsedcls); Ext.fly (nextbd) [AddorRemoveCls] (me.rowbodyhiddencls); me.recordsexpeded [record.internalid] = iscollapsed; view.refreshsize (); // синхронизируйте высоту и класс строки на заблокированной стороне if (me.grid.ownlockable) {antuctorlock = me.grid.ownerlockable; // fireview = howerlock.getView (); view = howerlock.lockedgrid.view; fireview = wormetlock.lockedgrid.view; rowheight = row.getheight (); // extjsiv-9848: в Firefox невозможно совпадать с высотой ряд //, что он фактически отображается из-за ошибок округления субпикселей. Чтобы обеспечить // высоты рядов с обеих сторон сетки одинаковы, мы должны установить // их обоих. row.setheight (iscollapsed? Rowheight: ''); row = ext.fly (view.getNode (rowidx), '_rowexpander'); row.setheight (iscollapsed? Rowheight: ''); row [AddorReMoveCls] (me.rowcollapsedcls); view.refreshsize (); } else {fireview = view; } // Триггер событие через сетку, а не viewthis.grid.firevent (iscollapsed? // объединить изложение из -за изменения размера ext.resumelayouts (true); },}); // ext.loader.setConfig ({anabled: true}); ext.onready (function () {ext.quicktips.init (); var store = new ext.data.store ({fields: [{name: 'filename', тип: 'String'}, {name: ', тип:' {name: 'recorddate', type: 'string'},], data: [{filename: 'file 1', комната: 'конференц-зал 1', recorddate: '2014-07-03'}, {filename: 'файл 2', комната: 'Конференция 2', recorddate: '2014-07-03'}, {fillenam 3 ', RecordDate:' 2014-07-03 '}], AutoLoad: true}); Console.log ('ext.grid.plugin.rowexpander');}}}); renderto: ext.getbody (), столбцы: [{text: "name", flex: 1, dataindex: 'filename'}, {text: "Conference Room", DataIndex: 'Room'}, {Text: "Date Record", renderer: ext.util.format.daterenderer ('ym'), dataindex: 'recoctdate. 300, плагины: расширитель, складываемая: true, animcollapse: false, заголовок: 'expander rows в складной сетке', iconcls: 'icon-grid'});}); </script> </head> <body id = "docbody"> </body> </html>