ext4.2+ ext.grid.plugin.rowexpander มีข้อผิดพลาดและการยุบตัวและการขยายตัวที่เพิ่มเข้ามาไม่สามารถเรียกใช้ ฉันตรวจสอบซอร์สโค้ดที่สอดคล้องกับ ext.grid.plugin.rowexpander และไม่ได้เพิ่มเหตุการณ์การล่มสลายและการขยายเหตุการณ์ แม้ว่าวิธีการ init และ togglerow ของ ext.grid.plugin.rowexpander จะถูกเขียนใหม่ตามวิธีการออนไลน์
วิธีแก้ปัญหา: เพิ่มเหตุการณ์ Collapsebody และ Expandbody ไปยัง Grid Object จากนั้นกำหนดค่าเหตุการณ์ทั้งสองนี้สำหรับกริดและในเวลาเดียวกันเขียนวิธี Togglerow ของ ext.grid.plugin.rowexpander ใหม่และเรียกใช้สองเหตุการณ์ที่เพิ่มโดยกริด
ซอร์สโค้ดทดสอบมีดังนี้:
<! doctype html สาธารณะ "-// w3c // dtd xhtml 1.0 transitional // en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> content = "text/html; charset = gb2312"> <title> ext4.2+ ext.grid.plugin.rowexpander ไม่สามารถเรียกใช้การล่มสลายของ Body Event Solution </title> <link rel = "stylesheet" type = "text/css" href = "../ type = "text/javascript" src = "../../ ext-all-debug.js"> </script> <pristr> ext.override (ext.grid.plugin.rowexpander, {// เหนือกว่าการล่มสลาย 'Expandbody'); // วิธีการแก้ปัญหาที่พบในฟอรัม Ext เพื่อให้เหตุการณ์ไม่สามารถเพิ่ม // storage grid object this.grid = grid this.grid.addevents ('clolapsbody', 'expandbody'); // เพิ่มเหตุการณ์ใน grid object}, togglerow: ฟังก์ชั่น ext.fly (rownode, '_rowexpander'), nextbd = row.down (me.rowbodytresterclector, true), isCollapsed = row.hascls (me.rowcollapsedcls), addorremovecls = iscollapsed? 'RemoveCls': 'AddCls', OwnerLock, Rowheight, FireView; // ระงับเลย์เอาต์เนื่องจากมีสองมุมมองที่เป็นไปได้มีการเปลี่ยนแปลงความสูงของพวกเขา ext.suspendlayouts (); แถว [addorremovecls] (me.rowcollapsedcls); ext.fly (nextbd) [addorremovecls] (me.rowbodyhiddencls); me.recordsexpanded [record.internalid] = iscollapsed; View.refreshSize (); // ซิงค์ความสูงและคลาสของแถวที่ด้านล็อคถ้า (me.grid.ownerlockable) {ownerlock = me.grid.ownerlockable; // fireview = ownerlock.getView (); ดู = ownowlock.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: ''); แถว [addorremovecls] (me.rowcollapsedcls); View.refreshSize (); } else {fireView = ดู; } // เหตุการณ์ทริกเกอร์ผ่านกริดไม่ใช่ viewthis.grid.fireevent (iscollapsed? // Coalesce วางตัวเนื่องจากการเปลี่ยนแปลงขนาดดู ext.resumelayouts (จริง); },}); // ext.loader.setConfig ({enabled: true}); ext.onready (function () {ext.quicktips.init (); var store = new ext.data.store ({ฟิลด์: [{ชื่อ: 'filename', ประเภท: 'string'} {ชื่อ: 'recorddate', ประเภท: 'String'},], data: [{filename: 'ไฟล์ 1', ห้อง: 'ห้องประชุม 1', recorddate: '2014-07-03'}, {filename: 'ไฟล์ 2', ห้องประชุม: 3 ', recorddate:' 2014-07-03 '}], autoload: true}); console.log ('ext.grid.plugin.rowexpander');}}}); renderto: ext.getbody (), คอลัมน์: [{text: "ชื่อไฟล์", Flex: 1, dataineDex: 'filename'}, {text: "ห้องประชุม", dataineDex: 'room'}, {text: "บันทึกวันที่" 300, ปลั๊กอิน: expander, collapsible: true, animcollapse: false, title, title: 'แถวเครื่องมือขยายในกริดที่ยุบได้', ไอคอน: 'ไอคอน-กริด'});}); </script> </head>