欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

extjs grid中columns用到的store未初始化完成的解决办法

程序员文章站 2022-03-26 23:00:59
...

使用extjs 开发grid的时候,如果某列的editor是store ,在store没有完成加载的时候,加载list数据,可能出现

该列不显示的问题,如下

{
    header: '站点', dataIndex: 'stationId', flex: 1,
    renderer: function (value) {
        var store = stationStore;
        var record = store.queryBy(function (rec) {
            if (rec.data.code == value) {
                return true;
            }
        }, this);
        if (record.getCount() == 1) {
            return record.get(0).data.name;
        }
    },
    editor: {
        columnWidth: 1,
        xtype: 'combobox',
        typeAhead: true,
        editable: true,
        queryMode: 'local',
        valueField: "code",
        displayField: 'name',
        forceSelection: true,
        store: stationStore
}
},
第一次加载页面的时候,容易出现该列不显示的问题,解决办法如下
先设置list的store autoLoad:false
列中用到的store 加载完成后再调用list.getStore().reload().
var coalTypeStore = Ext.create('Ext.data.Store', {
    autoLoad: true,
    fields: [{name: "name", type: "string"},
        {name: "code", type: "string"}],
    proxy: {
        // async: false,
type: 'ajax',
        url: ',
        reader: {
            type: 'json',
            root: 'records'
}
    },
    listeners: {
        'load': function () {
            if (stationStore.getCount() > 0) {
//其他store是否加载完成 
                Ext.getCmp('xx').getStore().load();
            }
        }
    }
});