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
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
+1 para su código que muestra cómo cambiar el nombre de la columna y cómo hacerla leer solo ... ¡bien! – HDave
aplausos, se necesita algo de excavación para encontrar: \ –