2016-04-14 3 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 
       }); 
    ... 
}); 
関連する問題