Ext4.2+ ext.grid.plugin.rowerexpander memiliki bug, dan collapsebody dan expandbody yang ditambahkan tidak dapat dipicu. Saya memeriksa kode sumber yang sesuai dengan ext.grid.plugin.rower expander, dan tidak menambahkan collapsebody dan memperluas acara. Bahkan jika metode init dan togglerow dari ext.grid.plugin.rower expander ditulis ulang sesuai dengan metode online, acara CollapseBody dan Expandbody tidak dapat dipicu.
Solusi: Tambahkan Collapsebody dan Expandbody Acara ke objek grid, lalu konfigurasikan dua acara ini untuk grid, dan pada saat yang sama menulis ulang metode togglerow ext.grid.plugin.rower expander, dan memicu dua peristiwa yang ditambahkan oleh grid.
Kode sumber tes adalah sebagai berikut:
<! Doctype html public "-// w3c // dtd xhtml 1.0 transisi // en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"><html><heHead>< <meta htmeta =" htpetpetpe = "html" contentspetpet; charset = gb2312 "> <title> ext4.2+ ext.grid.plugin.rowexpander tidak dapat memicu collapsebody, memperluas solusi acara </iteme> <tautan rel =" stylesheet "type =" text/css "href =" ../ sumber daya/css/css/ext-all.cs "rel =" external "nOF over" nofk = "JAVEP" nOFPOCE/CSS/CSS/EXTERALL. src = "../../ ext-all-debug.js"> </ptript> <script> ext.override (ext.grid.plugin.rowexpander, {// override ke Fire CollapseBody & Expandbody init: function (grid) {this.callparent (argumen); // grid.getview (). ext forum, sehingga peristiwa tidak dapat ditambahkan // objek grid penyimpanan this.grid = grid this.grid.addevents ('collapsebody', 'expandbody'); // tambahkan peristiwa ke objek grid}, togglerow: function (rowidx, record) {var me = this, view = me.view, rownnode = view.get.get. '_rowexpander'), nextBd = row.down (me.rowbodytrselector, true), isCollapsed = row.hascls (me.rowcollapsedcls), addorremovecls = isCollapsed? 'Removecls': 'AddCls', Ownerlock, RowHeight, Fireview; // menangguhkan tata letak karena kemungkinan dua tampilan memiliki ketinggian mereka berubah ext.suspendlayouts (); baris [addorremovecls] (me.rowcollapsedcls); Ext.fly (nextBd) [addorremovecls] (me.rowbodyhiddencls); me.recordsexpanded [record.internalid] = iscollapsed; view.refreshsize (); // Sinkronkan tinggi dan kelas baris di sisi terkunci if (me.grid.ownerlockable) {ownerlock = me.grid.ownererlockable; // fireview = ownerlock.getView (); view = ownerlock.lockedgrid.view; fireview = ownerlock.lockedgrid.view; rowHeight = row.getHeight (); // ExtJSIV-9848: Di Firefox offsetheight dari suatu baris mungkin tidak cocok // itu sebenarnya ditimbulkan tinggi karena kesalahan pembulatan sub-piksel. Untuk memastikan // ketinggian baris di kedua sisi jaringan adalah sama, kita harus mengatur // keduanya. row.setHeight (isCollapsed? RowHeight: ''); Row = ext.fly (view.getNode (rowidx), '_rowexpander'); row.setHeight (isCollapsed? RowHeight: ''); baris [addorremovecls] (me.rowcollapsedcls); view.refreshsize (); } else {fireview = view; } // Peristiwa pemicu melalui grid, bukan viewthis.grid.fireevent (iscollapsed? 'Expandbody': 'collapsebody', row.dom, record, nextbd); // berikut ini adalah solusi untuk forum ext, tidak valid //fireview.fireevent'iscollapsed? 'Expandbody': 'collapse', row. // menyatu dengan penetapan perubahan ukuran view ext.resumelayouts (true); },}); // ext.Loader.setConfig ({enabled: true}); ext.onready (function () {ext.quicktips.init (); var store = ext.data.store ({fields: {{{'string', tipe: 'string', tipe: {{{{{{{{'string', tipe: {Name: 'RecordDate', type: 'String'},], data: [{fileName: 'file 1', ruang: 'ruang konferensi 1', rekor: '2014-07-03'}, {fileName: 'File 2', ruang: 'Kamar Konferensi 2', RecordDate: '2014-07-03', Kamar: 'Kamar:' 3 ',' 3 ',' 3 ',' FILENOTE: '2014-07-03', '{' {'{' 3 ',' 2014-07-07 ',' FILENE: '2014-07-03', '2014', '2014', '2014', '2014', '2014-07-07', '2014', '2014', '2014', ' 3 ', RecordDate:' 2014-07-03 '}], AutOLoad: true}); var expander = new ext.grid.plugin.rowerexpander ({rowbodytpl: ext.xtemplate baru (' <v> pp </div>, pendengar: {evandbody: function () {) console.log ('ext.grid.plugin.rowexpander'); renderto: ext.getbody (), kolom: [{text: "nama file", flex: 1, dataindex: 'filename'}, {text: "room conference", dataindex: 'room'}, {text: "record date", renderer: ext.util.format.daterenderer ('ymMM-d-d-d-d-dat'), datdex: datdex: datdex.format.daterenderer ('ymMM-d-d-d-d-d-d-dat'), datdex: datdex: {'ymM-d-dat'), datdex: datdex: datdexat.datererer ('ymM-dide'), datdex: ymM-dide ('ymM-dide'), 300, plugin: expander, dapat dilipat: true, animcollapse: false, judul: 'expander baris dalam kisi yang dapat dilipat', iconcls: 'ikon-grid'});}); </script> </head> <body id = "docbody"> </body> </html>