ExtJS在加载列时可防止重新定位事件



我正在从事一个Extjs 6.2项目。当网格A中的列调整大小时,我需要执行一些操作。我认为这样做的正确事件是 columnResize 。问题是,由于列是通过动态从数据库加载的,因此每次将新列添加到网格中时都会触发此事件,我想防止它。我的意思是,只有在加载每一列时,我才需要触发此事件。

我尝试设置一个标志(命名 lfirstinit ),一旦加载列是false , false 加载了表单数据库,但是 columnResize 件从一开始就一直被解雇。

我该如何处理?谢谢。

查看:

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

我们终于丢弃了'columberize'方法。我们认为,在单击"关闭"按钮时,执行操作更可靠。但是,我要感谢您的建议,尤其是在下面发布答案的人,然后将其删除,然后才能将其标记为选定的答案。这是他/她发布的代码:

Ext.create('Ext.data.Store', {
    storeId: 'simpsonsStore',
    fields: ['name', 'email', 'phone'],
    data: [{
        name: 'Lisa',
        email: 'lisa@simpsons.com',
        phone: '555-111-1224'
    }, {
        name: 'Bart',
        email: 'bart@simpsons.com',
        phone: '555-222-1234'
    }, {
        name: 'Homer',
        email: 'homer@simpsons.com',
        phone: '555-222-1244'
    }, {
        name: 'Marge',
        email: 'marge@simpsons.com',
        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`);
            }
        }
    }
});

最新更新