Отключить автоматическую сортировку по сетке свойств в ExtJS - PullRequest
5 голосов
/ 03 декабря 2010

Я имею дело с сеткой свойств. Я хочу предотвратить автоматическую сортировку имен столбцов для сетки свойств. вот мой код Выделенный жирным шрифтом код - мой источник для сетки свойств, и его порядок такой, какой я хочу видеть Но 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);
    },
    <b>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'
    },</b>
    listeners: {
        beforeedit: function(){
            return false; // prevent editing 
        },
        headerclick: function(){
            return false; // prevent column sorting on click
        }
    }
})
Ext.reg('filedetail', Application.propertygrid.FileDetail);

Ответы [ 4 ]

8 голосов
/ 04 декабря 2010

Да.Я сделал с этим.И вот решение.

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
7 голосов
/ 12 марта 2013

Это не будет работать для 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 голосов
/ 17 сентября 2013

Для Extjs 3.4 нужно только:

delete propertygrid.getStore().sortInfo;
0 голосов
/ 04 сентября 2014

Вот как я это делаю: когда я определяю свои столбцы, я устанавливаю sortable property to false и определяю свой собственный «сортируемый флаг», например:

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

Позже, когда пользователь нажимает назаголовок столбца (срабатывает событие headerclick), и я проверяю, можно ли сортировать столбец, например:

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