2012-09-27 12 views
5

Me gustaría mostrar los campos persistentes (los definidos en mi archivo de modelo) en una cuadrícula de propiedades.ExtJS: modelo de visualización en Ext.grid.property.Grid

enter image description here

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

me carga artículos como por lo que en un evento de selección (en un controlador), donde registro es nuestro objeto de modelo y getInfo() es la cuadrícula de propiedades :

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

this.getInfo().setSource(source); 

Modelo:

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

¿Hay una mejor manera de hacer esto para todos los campos no asociativos (excluyendo allocations en mi caso) se envían automáticamente a la cuadrícula de propiedades? También es posible leer los campos con ATCOM.model.Shift.getFields() e iterar sobre los que buscan persistent:false; para conservar las claves restantes, pero ¿cómo obtengo la referencia de clase de una instancia? Como en, ¿cómo obtengo ATCOM.model.Shift desde una de sus instancias? Puedo llamar a getFields()?

EDIT:

Para encontrar el nombre de la clase: http://docs.sencha.com/ext-js/4-1/#!/api/Ext.Base-static-method-getName

+0

+1 para su código que muestra cómo cambiar el nombre de la columna y cómo hacerla leer solo ... ¡bien! – HDave

+0

aplausos, se necesita algo de excavación para encontrar: \ –

Respuesta

1

Es posible que funcione decir setSource (record.data). Solo estoy jugando con esto ahora; parece mostrar la información correcta, aunque puede perder el control sobre los detalles de los campos para habilitar la edición, etc.

+0

Sí, el único problema aquí es que puede mostrar más información de la que se necesita en 'datos', como la clase CSS, ID de padres, etc. –

Cuestiones relacionadas