2017-10-03 17 views
0

私はExtJS 6.2プロジェクトで作業しています。グリッド内の列のサイズが変更されたときに、いくつかの操作を実行する必要があります。私はそうするべき正しい出来事がカラムサイズであると思う。問題は、列がデータベースから動的にロードされるため、このイベントは新しい列がグリッドに追加されるたびに発生するため、このイベントは発生しないようにしたいと考えています。つまり、すべての列がロードされたときにだけこのイベントが発生する必要があります。ExtJSは列のロード中にresizecolumnイベントを防止します

私は列がロードされたフォームデータベースですが、columnresizeイベントは開始から発射され続ける一度だろう(lFirstInitという名前の)フラグを設定しようとしました。

私はこれにどのようにアプローチできますか?ありがとう。

ビュー:

Ext.define('App.view.TMainBrowseGrid', { 
    extend: 'Ext.grid.Panel', 
    alias: 'widget.TMainBrowseGrid', 

    requires: [ 
     'App.view.TMainBrowseGridViewModel', 
     'App.view.override.TMainBrowseGrid', 
     'Ext.view.Table', 
     'Ext.grid.column.RowNumberer', 
     'App.view.TMainBrowseGridViewController' 
    ], 

    controller: 'TMainBrowseGrid', 

    config: { 
     oParent: null, 
     cBrwName: '', 
     cCodForm: '' 
    }, 

    viewModel: { 
     type: 'TMainBrowseGrid' 
    }, 

    flex: 1, 

    columns: [ 
     { 
      xtype: 'rownumberer', 
      itemId: 'oColRowNum' 
     } 
    ], 

    listeners: { 
     columnresize: 'onGridpanelColumnResize', 
    } 

}); 

コントローラ

Ext.define('App.view.TMainBrowseGridViewController', { 
    extend: 'Ext.app.ViewController', 
    alias: 'controller.TMainBrowseGrid', 

    onGridpanelColumnResize: function (component, column, width, eOpts) { 
     // THINGS TO DO... 
    } 
}); 
+0

UIに表示される列の数はいくつですか? yesの場合、レンダリングされた列数と実際の列数を比較できます。いくつかのダミーコードを示すことができるなら、私はそれをコード化することができます。 – Tejas

+0

グリッドビューの 'refresh'リスナーにプログラマチックに' columnresize'リスナを追加できますか? – chrisuae

答えて

0

私たちは 'columnresize' アプローチを最終的に廃棄されてきました。 「閉じる」ボタンをクリックすると、操作がより確実になると考えました。しかし、私はあなたの提案、特に以下の答えを投稿した人に感謝し、その後、それを選択された回答としてマークする前に削除しました。これは彼が投稿したコードでした:

Ext.create('Ext.data.Store', { 
    storeId: 'simpsonsStore', 
    fields: ['name', 'email', 'phone'], 
    data: [{ 
     name: 'Lisa', 
     email: '[email protected]', 
     phone: '555-111-1224' 
    }, { 
     name: 'Bart', 
     email: '[email protected]', 
     phone: '555-222-1234' 
    }, { 
     name: 'Homer', 
     email: '[email protected]', 
     phone: '555-222-1244' 
    }, { 
     name: 'Marge', 
     email: '[email protected]', 
     phone: '555-222-1254' 
    }] 
}); 

Ext.create('Ext.grid.Panel', { 
    title: 'Simpsons', 
    store: Ext.data.StoreManager.lookup('simpsonsStore'), 
    columns: [{ 
     text: 'Name', 
     dataIndex: 'name' 
    }, { 
     text: 'Email', 
     dataIndex: 'email', 
     flex: 1 
    }, { 
     text: 'Phone', 
     dataIndex: 'phone' 
    }], 
    height: 200, 
    width: 400, 
    renderTo: Ext.getBody(), 
    listeners: { 
     columnresize: function(ct, column, width, eOpts){ 
      if(ct.containsFocus){// It will true when we resize column. 
       alert('resize'); 
       console.log(`${column.text} Column resized`); 
      } 
     } 
    } 
}); 
関連する問題