ext4.2+ ext.grid.plugin.rowexpanderにはバグがあり、崩壊体と拡張体を追加することはトリガーできません。 ext.grid.plugin.rowexpanderに対応するソースコードを確認しましたが、崩壊ボディイベントと展開イベントを追加しませんでした。 ext.grid.plugin.rowexpanderのinit and togglerowメソッドがオンライン方法に従って書き換えられたとしても、崩壊体と拡張体のイベントをトリガーすることはできません。
解決策:Grid ObjectにCollapseBodyイベントと拡張ボディイベントを追加し、Gridにこれらの2つのイベントを構成し、同時にExt.grid.Plugin.RowExpanderのトグロウメソッドを書き直し、グリッドが追加した2つのイベントをトリガーします。
テストソースコードは次のとおりです。
<!doctype html public " - // w3c // dtd xhtml 1.0 transitional // en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> <hhtml> <head> <meta htp-aiv =" "" content = "text/html; charset = gb2312"> <title> ext4.2+ ext.grid.plugin.rowexpander collapsybody、展開イベントソリューション</title> <link rel = "styleSheet" type = "text/css" href = "..// type = "text/javascript" src = "../../ ext-all-debug.js"> </script> <script> ext.Override(ext.grid.plugin.rowexpander、{// collapsbody&Expandbody&body init:function(grid){this.callparent(arguments);/grid grid bewines( 'cllideview() 「拡張体」); // extフォーラムにあるソリューション。 ext.fly(rownode、 '_ rowexpander')、nextbd = row.down(me.rowbodytrsecrecer、true)、iscollapsed = row.hascls(me.rowcollapsededcls)、adroremovecls = iscollapsed? 'Removecls': 'addcls'、ownerlock、rowheight、fireview; //レイアウトを一時停止します。 row [addorremovecls](me.rowcollapsedcls); ext.fly(nextbd)[addorremovecls](me.rowbodyhiddencls); me.recordsexpanded [record.internalid] = isCollapsed; view.refreshsize(); //ロックされた側の行の高さとクラスを同期するif(me.grid.Ownellockable){ownerlock = me.grid.Ownellockable; // fireview = anderlock.getView(); view = ownerlock.lockedgrid.view; fireview = ownerlock.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.fireevent(iscollapsed? 'expandbody': 'collapsebody'、row.dom、record、nextbd); //ビューサイズの変更のためにレイアウトするCoalesce ext.resumelayouts(true); }、}); // ext.loader.setconfig({enabled:true}); ext.onedy(function(){ext.quicktips.init(); var store = new ext.data.Store({{name: 'filename'、type: '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-03'}、{filename: 'filename:' filename: 'filename:' filename: 'filename:' filename 3 '、RecordDate:' 2014-07-03 '}]、autoload:true}); console.log( 'ext.grid.plugin.rowexpander'); renderto:ext.getBody()、列:[{text: "ファイル名"、flex:1、dataindex: 'filename'}、{text: "conference room"、dataindex: 'room'}、{"record date"、renderer:ext.util.format.daterenerer 300、プラグイン:エキスパンダー、折りたたみ可能:true、animcollapse:false、タイトル:「折りたたみ式グリッドのエキスパンダー行」、iconcls: 'icon-grid'});}); </script> </head> "docbody"> </body> html>