2012-09-27 11 views
5

Chciałbym wyświetlić trwałe pola (te zdefiniowane w moim pliku modelu) w siatce właściwości.ExtJS: Wyświetl model w Ext.grid.property.Grid

enter image description here

Property Grid:

Ext.define('ATCOM.view.InspectorProperties', { 
    extend : 'Ext.grid.property.Grid', 
    alias : 'widget.inspectorProperties', 
    cls : 'property-grid', 
    height : 150, 
    listeners : { 
     beforerender : function() { 
      // Rename the first column 
      var cols = this.getView().getHeaderCt().getGridColumns(); 
      cols[0].setText("Property"); 
     }, 
     beforeedit : function(e) { 
      // Read-only 
      return false; 
     } 
    }, 
    source : {} // Start with no items 
}); 

załadować przedmioty podobnie jak w wybranej imprezy (w sterowniku), gdzie płyta jest nasz model obiektowy i GetInfo() jest siatka nieruchomość :

var source = {}; 
source.id = record.get('id'); 
source.start = record.get('start'); 
source.end = record.get('end'); 

this.getInfo().setSource(source); 

model:

Ext.define('ATCOM.model.Shift', { 
    extend : 'Ext.data.Model', 
    fields : [ 'id', { 
     name : 'start', 
     type : 'date', 
    }, { 
     name : 'end', 
     type : 'date', 
    }, 'position', 'controller' ], 
    hasMany : { 
     model : 'ATCOM.model.ShiftAlloc', 
     name : 'allocations' 
    } 
}); 

Czy istnieje lepszy sposób na zrobienie tego, więc wszystkie niezłączne pola (z wyłączeniem allocations w moim przypadku) są automatycznie wysyłane do siatki własności? Może być również możliwe odczytanie pól za pomocą ATCOM.model.Shift.getFields() i powtórzenie sprawdzania pod kątem persistent:false;, aby zachować pozostałe klucze, ale jak uzyskać odwołanie do klasy z instancji - tak jak w przypadku, w jaki sposób uzyskać ATCOM.model.Shift z jednego ze swoich wystąpień, aby Mogę nazwać getFields()?

EDIT:

Dla znalezienia nazwy klasy: http://docs.sencha.com/ext-js/4-1/#!/api/Ext.Base-static-method-getName

+0

+1 dla kodu, który pokazuje, jak zmienić nazwę kolumny i jak ją odczytać tylko ... miłe! – HDave

+0

Wiwaty, to wymaga trochę kopania, aby znaleźć: \ –

Odpowiedz

1

może pracować powiedzieć setSource (record.data). Po prostu gram teraz z tym; wydaje się pokazywać właściwe informacje, ale możesz stracić kontrolę nad szczegółami pól, które można edytować itp.

+0

Tak, jedynym problemem jest to, że może pokazać więcej informacji niż jest to wymagane w 'danych', takich jak klasa CSS, identyfikatory rodziców itp. –