如何获得网格中的商店范围

时间:2016-07-01 08:54:14

标签: javascript extjs extjs3

我在init组件中编写了Ajax,我在this.store中获取了所有需要的数据。 但我没有在我定义的网格中获得存储范围。由于我关闭了Ajax Success的支架,我不是。什么是正确的方法。 我的代码是:

initComponent: function() {
    this.fields = [];
    this.columns = [];
    this.data = [];
    this.store = [];
    Ext.Ajax.request({
                        url: 'XML/1Cohart.xml',
                        scope: this,
                        timeout: global_constants.TIMEOUT,
                        method: "GET", 
                        disableCaching: true,
                        failure: function(response) {
                            utils.showOKErrorMsg(sdisMsg.ajaxRequestFailed);
                        },
                        success: function(response) {
                            var datas = response.responseXML;
                            Ext.each(datas.getElementsByTagName("HEADER"), function(header) {
                                this.buildField(header);
                                this.buildColumn(header);
                            }, this);
                            Ext.each(datas.getElementsByTagName("G"), function (columnData) {
                              this.buildData(columnData);
                                this.fieldLength = this.fields.length;
                                this.record = [];
                                for (i = 0; i < this.fieldLength; i++) {
                                    //debugger;
                                    var fieldName = this.fields[i].name
                                    this.record[i] = columnData.getAttribute(fieldName);
                                }
                                this.data.push(this.record);                 
                            }, this);
                            this.store = new Ext.data.ArrayStore({
                                fields : this.fields
                            });
                            this.store.loadData(this.data); // Getting correct data in this.store
                        },
                    });

在东面板的同一个init组件中我定义了网格。哪个列即将到来,但商店没有。

网格代码

          {
            xtype: 'panel',
            region: "east",
            header: true,
            collapsible: true,
            autoScroll: true,
            //columnWidth: 0.5,
            width: "30%",
            hideBorders: true,
            split: true,
            items: [{
                xtype: 'panel',
                title: "Search Result",
                height:500,
                items: [{
                    xtype: 'grid',
                    itemid: 'ABC_GRID',
                    store : this.store,
                    autoHeight: true,
                    sm: new Ext.grid.CheckboxSelectionModel({singleSelect:true}),
                    frame: true,
                    columns : this.columns,
                }]

            }]          

2 个答案:

答案 0 :(得分:0)

this.store中加载数据后,获取网格并重新配置其商店

   Ext.ComponentQuery.query("#ABC_GRID")[0].reconfigure(this.store);

对于ExtJs 3

我们需要使用Ext.getCmp(),因为Ext.ComponentQuery.query不受支持。需要将网格的id属性定义为id:ABC_GRID

Ext.getCmp("ABC_GRID").reconfigure(this.store)

答案 1 :(得分:-1)

您可以调用grid.getview()。getStore(),而不是调用This.store,您将获得要加载数据的网格存储。