PropertyGrid自作主张地一定要把所有的属性按字母升序排列,不管怎么弄就是调不过来,原来源代码里是写死的排序!唯一的办法是,把Ext.grid.PropertyGrid.initComponent()函数替换成下面这样:
initComponent: function() {
this.customEditors = this.customEditors || {};
this.lastEditRow = null;
var store = new Ext.grid.PropertyStore(this);
this.propStore = store;
var cm = new Ext.grid.PropertyColumnModel(this, store);
// 为sort()添加if控制
if (this.sortPropertyColumn) {
store.store.sort('name', 'ASC');
}
this.addEvents(
'beforepropertychange',
'propertychange'
);
this.cm = cm;
this.ds = store.store;
Ext.grid.PropertyGrid.superclass.initComponent.call(this);
this.selModel.on('beforecellselect', function(sm, rowIndex, colIndex) {
if (colIndex === 0) {
this.startEditing.defer(200, this, [rowIndex, 1]);
return false;
}
}, this);
然后,给Ext.grid.PropertyGrid加一个属性sortPropertyColumn,缺省值为true(保持与原代码的一致),可以在初始化的时候设置,当为false的时候,就不会执行排序了。
大家一对照就知道了,其实就是给那个sort函数加了个条件。