2012-09-27 5 views
5

Я хотел бы отображать постоянные поля (определенные в файле модели) в сетке свойств.ExtJS: Показать модель в Ext.grid.property.Grid

enter image description here

недвижимости Сетка:

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

загружаю предметы, как так в выбранном событии (в контроллере), где запись наша модель объекта и GetInfo() является сетка свойств :

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

this.getInfo().setSource(source); 

Модель:

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

Есть ли лучший способ пойти об этом, так что все не-ассоциативных полях (за исключением allocations в моем случае) автоматически отправляются в сетку свойств? Также можно было бы прочитать поля с ATCOM.model.Shift.getFields() и перебрать те, которые проверяют persistent:false;, чтобы сохранить оставшиеся ключи, но как получить ссылку на класс из экземпляра - как в, как я могу получить ATCOM.model.Shift из одного из его экземпляров, так что Я могу назвать getFields()?

EDIT:

Для нахождения имени класса: http://docs.sencha.com/ext-js/4-1/#!/api/Ext.Base-static-method-getName

+0

+1 для вашего кода, который показывает, как изменить имя столбца и как его читать только ... хорошо! – HDave

+0

приветствия, требуется несколько копаний, чтобы найти: \ –

ответ

1

Он может работать, чтобы сказать setSource (record.data). Я просто играю с этим сейчас; он, кажется, показывает правильную информацию, хотя вы можете потерять контроль над деталями, какие поля включить для редактирования, и т. д.

+0

Да, единственная проблема здесь в том, что она может отображать больше информации, чем требуется в 'data', например, в классе CSS, родительских идентификаторах и т. Д. –

Смежные вопросы