长话短说,具体的请看图
需求如图:
修改CheckColumn.js源码,添加鼠标点击改变事件
完整JS脚本
1 Ext.ns('Ext.ux.grid'); 2 Ext.ux.grid.CheckColumn = Ext.extend(Ext.grid.Column, { 3 editable: true, 4 processEvent: function (name, e, grid, rowIndex, colIndex) { 5 if (name == 'mousedown') { 6 prj.curGrid = grid; 7 this.init(name, e, grid, rowIndex, colIndex); 8 var record = grid.store.getAt(rowIndex); 9 this.fireEvent('checkchange', this, record.data[this.dataIndex]); 10 if (this.editable) { 11 record.set(this.dataIndex, !record.data[this.dataIndex]); 12 return false; 13 } else { 14 return Ext.grid.ActionColumn.superclass.processEvent.apply(this, arguments); 15 } 16 } else { 17 return Ext.grid.ActionColumn.superclass.processEvent.apply(this, arguments); 18 } 19 }, 20 renderer: function (v, p, record) { 21 p.css += ' x-grid3-check-col-td'; 22 return String.format('<div class="x-grid3-check-col{0}"> </div>', v ? '-on' : ''); 23 }, 24 init: Ext.emptyFn, 25 setEditable: function (f) { 26 this.editable = f; 27 } 28 }); 29 30 // register ptype. Deprecate. Remove in 4.0 31 Ext.preg('checkcolumn', Ext.ux.grid.CheckColumn); 32 33 // backwards compat. Remove in 4.0 34 Ext.grid.CheckColumn = Ext.ux.grid.CheckColumn; 35 36 // register Column xtype 37 Ext.grid.Column.types.checkcolumn = Ext.ux.grid.CheckColumn;