【问题标题】:Ext.JS - Grid doesn't load store valuesExt.JS - 网格不加载存储值
【发布时间】:2016-06-24 13:03:53
【问题描述】:

我有一个STORE,如下:

Ext.define('Bcks.store.SeriBaskiStore', {
            extend : 'Ext.data.Store',
            storeId : 'seriBaskiStore',
            alias : 'widget.seribaskistore',
            model : 'Bcks.model.SeriBaskiModel',
            remoteSortFilterUseMapping : true,
            pageSize : 25,
            proxy : {
                type : 'ajax',
                api : {
                    read : 'seriBaski/getSeriBaski.json',
                    create : 'seriBaski/saveSeriBaski.json',
                    update : 'seriBaski/updateSeriBaski.json',
                    destroy : 'seriBaski/removeSeriBaski.json'
                },
                writer : {
                    type : 'json',
                    allowSingle : false
                }
            },
            resetSorters : function() {
                var sorters = [{
                            property : 'baskiTarihi',
                            direction : 'ASC'
                        }];
                this.sorters.clear();
                this.sorters.addAll(this.decodeSorters(sorters));
            }
        });

当我在seriBaski/getSeriBaski.json 上执行 GET 请求时,我检索数据集如下:

{"total":10,"data":[{"seriBaskiId":-31,"baskiTarihi":"25/06/2016","baskiSekli":{"value":"1","aciklama":"Tacir","aciklama2":"TACİR","objectValue":"1"},"siparisListesi":null,"version":0},{"seriBaskiId":-32,"baskiTarihi":"25/06/2016","baskiSekli":{"value":"1","aciklama":"Tacir","aciklama2":"TACİR","objectValue":"1"},"siparisListesi":null,"version":0},{"seriBaskiId":-33,"baskiTarihi":"25/06/2016","baskiSekli":{"value":"3","aciklama":"Tacir-Hamiline","aciklama2":"TACİR-HAMİLİNE","objectValue":"3"},"siparisListesi":null,"version":0},{"seriBaskiId":-34,"baskiTarihi":"25/06/2016","baskiSekli":{"value":"4","aciklama":"Tacir Olmayan-Hamiline","aciklama2":"TACİR OLMAYAN-HAMİLİNE","objectValue":"4"},"siparisListesi":null,"version":0},{"seriBaskiId":-35,"baskiTarihi":"25/06/2016","baskiSekli":{"value":"1","aciklama":"Tacir","aciklama2":"TACİR","objectValue":"1"},"siparisListesi":null,"version":0},{"seriBaskiId":-36,"baskiTarihi":"25/06/2016","baskiSekli":{"value":"2","aciklama":"Tacir Olmayan","aciklama2":"TACİR OLMAYAN","objectValue":"2"},"siparisListesi":null,"version":0},{"seriBaskiId":-37,"baskiTarihi":"25/06/2016","baskiSekli":{"value":"3","aciklama":"Tacir-Hamiline","aciklama2":"TACİR-HAMİLİNE","objectValue":"3"},"siparisListesi":null,"version":0},{"seriBaskiId":-38,"baskiTarihi":"25/06/2016","baskiSekli":{"value":"4","aciklama":"Tacir Olmayan-Hamiline","aciklama2":"TACİR OLMAYAN-HAMİLİNE","objectValue":"4"},"siparisListesi":null,"version":0},{"seriBaskiId":-39,"baskiTarihi":"25/06/2016","baskiSekli":{"value":"1","aciklama":"Tacir","aciklama2":"TACİR","objectValue":"1"},"siparisListesi":null,"version":0},{"seriBaskiId":-40,"baskiTarihi":"25/06/2016","baskiSekli":{"value":"2","aciklama":"Tacir Olmayan","aciklama2":"TACİR OLMAYAN","objectValue":"2"},"siparisListesi":null,"version":0}],"success":true}

我有一个包含 GRID 的 PANEL

Ext.define('Bcks.view.panel.SeriBaskiPanel', {
            extend : 'Ext.panel.Panel',
            alias : 'widget.seribaskipanel',
            title : 'Seri Baski Paneli',
            titleAlign : 'center',
            layout : 'border',

            items : [{
                        xtype : 'seribaskigrid',
                        name : 'seriBaskiGrid',
                        title : 'Seri Baski Tablosu',
                        fitToFrame : true,
                        region : 'center',
                        split : true,
                        flex : 1,
                        selectionOlsun : true,
                        filtreOlsun : true,
                        pdfHidden : false
                    }],

            initComponent : function() {
                console.warn(this.id, " yüklendi (initComponent)");
                this.callParent(arguments);
            }
        });

在我的 CONTROLLER 上,我尝试按如下方式检索商店内容:

Ext.define('Bcks.controller.SeriBaskiController', {
    extend : 'Ext.app.Controller',
    models : ['SeriBaskiModel'],
    stores : ['SeriBaskiStore'],
    views : ['panel.SeriBaskiPanel', 'grid.SeriBaskiGrid'],

    refs : [ {
        ref : 'seriBaskiPanel',
        selector : 'seribaskipanel'
    }, {
        ref : 'seriBaskiGrid',
        selector : 'seribaskipanel > seribaskigrid[name=seriBaskiGrid]'
    } ],

    init : function() {
        this.control({
            'seribaskipanel' : {
                'beforerender' : this.beforeRenderSeriBaskiPanel,
                'activate' : this.onPageStartSeriBaskiPanel,
                'deactivate' :  this.onPageEndSeriBaskiPanel
            },
            'seribaskipanel > seribaskigrid[name=seriBaskiGrid]' : {
                'beforerender' : this.beforeRenderSeriBaskiGrid
            }
        });
    },

    beforeRenderSeriBaskiPanel : function(tabpanel, newCard, oldCard) {
    },
    onPageStartSeriBaskiPanel : function(panel, eopts) {
        console.start(arguments);

        var grid = panel.down('seribaskigrid');

        console.log("SERİ BASKI GRID ", grid);

        var store = grid.store.load();

        store.currentPage = 1;
        console.end(arguments);
    },
    onPageEndSeriBaskiPanel : function() {
    },
    beforeRenderSeriBaskiGrid : function(grid) {
        console.start(arguments);
        var me = this, store = Ext.create('Bcks.store.SeriBaskiStore', {
                    storeId : 'mySeriBaskiGrid'
                });
        store.on('beforeload', me.beforeLoadKurumTahsilat, this);
        if (Ext.isNNDefined(grid.down('pagingtoolbar'))) {
            grid.down('pagingtoolbar').bindStore(store);
        }
        grid.reconfigure(store);
        console.end(arguments);
    },
    beforeLoadKurumTahsilat : function(st, op, opt) {
        console.start(arguments);
        var me = this, ep = st.proxy.extraParams;
        console.end(arguments);
    }

});

但是,console.log("SERİ BASKI GRID ", grid); 返回一个空存储。关于如何从网格中检索存储内容的任何想法?

【问题讨论】:

    标签: javascript model-view-controller extjs


    【解决方案1】:

    您可以通过多种方式获取网格参考和存储

    1) 通过使用 itemId

    {
                        xtype : 'seribaskigrid',
                        itemId:'seribaskigridItem',
                        name : 'seriBaskiGrid',
                        title : 'Seri Baski Tablosu',
                        fitToFrame : true,
                        region : 'center',
                        split : true,
                        flex : 1,
                        selectionOlsun : true,
                        filtreOlsun : true,
                        pdfHidden : false
                    }
    

    var grid = Ext.ComponentQuery.query('#seribaskigridItem')[0];
    grid.getStore();

    2) var grid = panel.down('grid');

    3)如果你的选择器没问题,你可以使用:

    this.getSeriBaskiGrid().getStore();

    【讨论】:

    • 我已经尝试过这些选项。他们仍然返回一个带有空 items 数组的商店。
    • 您之前加载过您的商店吗?因为我告诉您的方式将为您提供商店的参考,但在此之前您必须加载它或使用参考并将其加载到控制器中。
    • 是的,我在 Controller 方法 onPageStartSeriBaskiPanel 中加载 store
    • 在控制器中加载后,然后您又要在哪里尝试获取商店?
    • 'var store = grid.store.load();'在此语句之后,当我打印商店时,它返回为空。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-07
    • 2014-01-04
    • 1970-01-01
    • 2012-05-19
    • 2012-01-06
    • 2014-05-05
    相关资源
    最近更新 更多