2010-12-03 3 views
4

Я имею дело с сеткой свойств. Я хочу предотвратить автоматическую сортировку имен столбцов для сетки свойств. вот мой код. Жирный выделенный код является моим источником сетки свойств, и его порядок похож на то, что я хочу видеть. Но Ext - автоматическая сортировка заказов столбцов по алфавиту. Как я могу это предотвратить.Отключить автоматическую сортировку по сетке свойств в ExtJS

Спасибо за любое предложение.

 
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); 

ответ

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 
+0

Пользователь может по-прежнему хотеть сортировать столбцы, но просто хочет отключить автоматическую сортировку, выполненную при рендеринге. – goodies4uall 2013-09-17 15:33:40

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 
0

Этот так я это делаю: Когда я определяю мои колонки я установил 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 ... 
    } 
}