今天真是很开心,非常非常的开心,因为解决了大bug。嘿嘿 开心的还有我买了一个电脑
配置还行:E6600,2G,1TB,1G独显,HG6450显卡
超值的是才3100.哈哈还是品牌机,我的天,这么搞,果断下单买了,主要是我一般都是用笔记本的
想想还是弄个台式机比较舒服,开发玩游戏都是很好。开发一台电脑真的不够用。过几天再弄个2G内存
爽了
言归正传,主要讲述Extjs 4.0 Grid 跳动的问题 调查发现主要是selModel的问题
解决方案1:监听取消
代码如下:
selModel: Ext.create('Ext.selection.Model', { listeners: {} })
在Extjs Blog中找到。比较麻烦的事如果不用Ext.selection.Model,那么上面的方法就不好使
解决方案2 :复写原类
Extjs 4.0 Grid跳动的主要原因是focus的问题
官网的话:
BrowserBug: WebKit & IE refuse to focus the element, rather it will focus it and then immediately focus the body. This
temporary hack works for Webkit and IE6. IE7 and 8 are still broken
代码如下:
Ext.override(Ext.selection.RowModel, { onRowMouseDown: function (view, record, item, index, e) { this.selectWithEvent(record, e); } });
或者:
Ext.override(Ext.selection.CheckboxModel, { onRowMouseDown: function(view, record, item, index, e) { var me = this; var checker = e.getTarget('.' + Ext.baseCSSPrefix + 'grid-row-checker'); if (!me.allowRightMouseSelection(e)) { return; } if (me.checkOnly && !checker) { return; } if (checker) { var mode = me.getSelectionMode(); if (mode !== 'SINGLE') { me.setSelectionMode('SIMPLE'); } me.selectWithEvent(record, e); me.setSelectionMode(mode); } else { me.selectWithEvent(record, e); } } }); Ext.override(Ext.grid.plugin.CellEditing, { cancelEdit: function() { var me = this, activeEd = me.getActiveEditor(), viewEl = me.grid.getView().getEl(me.getActiveColumn()); me.setActiveEditor(null); me.setActiveColumn(null); me.setActiveRecord(null); if (activeEd) { activeEd.cancelEdit(); } }, startEdit: function(record, columnHeader) { var me = this, value = record.get(columnHeader.dataIndex), context = me.getEditingContext(record, columnHeader), ed; record = context.record; columnHeader = context.column; me.completeEdit(); context.originalValue = context.value = value; if (me.beforeEdit(context) === false || me.fireEvent('beforeedit', context) === false || context.cancel) { return false; } if (columnHeader && !columnHeader.getEditor(record)) { return false; } ed = me.getEditor(record, columnHeader); if (ed) { me.context = context; me.setActiveEditor(ed); me.setActiveRecord(record); me.setActiveColumn(columnHeader); me.editTask.delay(15, ed.startEdit, ed, [me.getCell(record, columnHeader), value]); } }, onEditComplete : function(ed, value, startValue) { var me = this, grid = me.grid, sm = grid.getSelectionModel(), activeColumn = me.getActiveColumn(), dataIndex; if (activeColumn) { dataIndex = activeColumn.dataIndex; me.setActiveEditor(null); me.setActiveColumn(null); me.setActiveRecord(null); delete sm.wasEditing; if (!me.validateEdit()) { return; } if (value !== startValue) { me.context.record.set(dataIndex, value); } me.context.value = value; me.fireEvent('edit', me, me.context); } } });