2016-04-14 4 views
0

У меня есть сетка с столбцом с редактором, определенным ниже.Extjs 4.0.7-Поле редактора доступа при загрузке сетки

this.accrualGrid = new Ext.grid.GridPanel({ 
     store: store, 
     id:'accrualGrid_add', 
     plugins :[this.cellEditing], 
     columns: [ 

      {header: 'Milestone Description', width: 340, dataIndex: 'Description', 

       getEditor: function(record) { 
        if(Ext.getCmp('accrualGrid_add').store.indexOf(record)==0) 
        { 
         return Ext.create('Ext.grid.CellEditor', { 

          field: Ext.create('Ext.form.field.Text', { 

           id:'MDesc_Add', 
           validator:function(val){ 
            if(val=="") 
             return false; 
            else 
             return true; 
           }, 
          }) 
         }); 

        } 

       } 
      }] 

Каждый раз, когда сетка загружается, я не могу получить доступ к текстовому полю внутри редактора, пока не нажмем на эту ячейку.

Ext.getCmp ('MDesc_Add') дает неопределенное значение.

После того, как я нажимаю на эту ячейку, он дает мне объект текстового поля.

Как я могу получить доступ к объекту текстового поля только при загрузке сетки или задавать данные сетки?

+0

Что вы пытаетесь достичь? –

+0

Я хочу проверить значение в поле (и показать красную рамку, если оно недействительно), когда данные установлены, а не щелчка по полю – AngryLeo

ответ

1

Это потому, что вы создаете экземпляр поля внутри метода getEditor, который вызывается только тогда, когда необходим редактор (когда он должен отображаться).

Если вы хотите поле, чтобы всегда быть в наличии, вы должны создать его экземпляр, прежде чем создать экземпляр сетки:

var editorField = Ext.create('Ext.form.field.Text', { 
     id:'MDesc_Add', 
     validator:function(val){ 
     if(val=="") return false; 
     else return true; 
    }); 
this.accrualGrid = new Ext.grid.GridPanel({ 
    ... 
       return Ext.create('Ext.grid.CellEditor', { 
        field: editorField 
       }); 
    ... 
});