2010-12-03 58 views
4

J'ai affaire à une grille de propriétés. Je souhaite empêcher le tri automatique des noms de colonnes pour la grille de propriétés. voici mon code. Le code en surbrillance gras est ma source pour la grille de propriété et sa commande est juste comme je veux voir. Mais Ext est un tri automatique des ordres de colonnes alphabétiquement. Comment puis-je empêcher cela.Désactiver le tri automatique sur la grille des propriétés dans ExtJS

Merci pour votre suggestion.

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

Répondre

8

Oui. Je l'ai fait avec. Et voici la solution.

 
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

L'utilisateur peut toujours vouloir trier les colonnes, mais veut simplement désactiver le tri automatique effectué lors du rendu. – goodies4uall

6

Cela ne fonctionnera pas pour le 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 

Vous pouvez essayer ceci:

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

Pour Extjs 3.4 ne devrait avoir besoin:

delete propertygrid.getStore().sortInfo; 
0

Cette est la façon dont je fais ceci: Quand je définis mes colonnes, je mis la sortable property to false et je définir mon propre « drapeau sortable », comme ceci:

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

Plus tard, quand un utilisateur clique sur l'en-tête de colonne (l'événement headerclick se déclenche) et je vérifie si la colonne est triable ou non, comme ceci:

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