在ExtJS中禁用属性网格上的自动排序

时间:2010-12-03 20:57:02

标签: extjs propertygrid

我正在处理财产网格。我想阻止属性网格的列名称的自动排序。 这是我的代码。大胆突出显示的代码是我的属性网格源,它的顺序就像我想看到的那样。但Ext是按字母顺序自动排序列顺序。我怎样才能防止这种情况。

感谢您的任何建议。

Ext.ns('Application.propertygrid');
Application.propertygrid.FileDetail = Ext.extend(Ext.grid.PropertyGrid, {
    title: 'File Detail',
    height: 200,
    border: false,
    stripeRows: true,
    flex: 1,
    initComponent: function () {
        Application.propertygrid.FileDetail.superclass.initComponent.apply(this, arguments);
    },
    source: {
        Name: 'Please select a file',
        Type: 'Please select a file',
        Size: 'Please select a file',
        Path: 'Please select a file',
        FullPath: 'Please select a file',
        Width: 'Please select a file',
        Height: 'Please select a file'
    },
    listeners: {
        beforeedit: function(){
            return false; // prevent editing 
        },
        headerclick: function(){
            return false; // prevent column sorting on click
        }
    }
})
Ext.reg('filedetail', Application.propertygrid.FileDetail);

4 个答案:

答案 0 :(得分:8)

呀。我已经完成了它。这是解决方案。

var p = new Ext.grid.PropertyGrid({
  ...
  // do not specify 'source' here
});

delete p.getStore().sortInfo; // Remove default sorting
p.getColumnModel().getColumnById('name').sortable = false; // set sorting of first column to false
p.setSource(source); // Now load data

答案 1 :(得分:6)

这对Extjs 4不起作用:

delete p.getStore().sortInfo; // Remove default sorting
p.getColumnModel().getColumnById('name').sortable = false; // set sorting of first column to false
p.setSource(source); // Now load data

你可以试试这个:

p.getStore().sorters.items = [] // which should remove sorting information from the store
p.setSource(source) // now load the data

答案 2 :(得分:2)

对于Extjs 3.4,只需要:

delete propertygrid.getStore().sortInfo;

答案 3 :(得分:0)

这是我这样做的方式: 当我定义我的列时,我设置sortable property to false并定义我自己的'sortable flag',如下所示:

var column = {
            xtype: 'column-component',
            ...
            sortable: false,
            sortableColumn: true
        }

稍后当用户点击列标题时(headerclick事件被触发),我检查列是否可排序,如下所示:

onHeaderClick: function(ct, column, e) {
    if (column.sortableColumn) {
        // do your own sorting ... 
    }
}