2016-04-14 46 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')給出未定義的值。

當我點擊那個單元格後,它給了我textfield對象。

如何在網格加載或設置網格數據時訪問textfield對象?

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