【问题标题】:ExtJS: create dynamic store \ gridExtJS:创建动态存储\网格
【发布时间】:2015-12-10 11:56:30
【问题描述】:

大家好,我正在学习动态存储,我从数组中获取数据 并创建一个商店,但如果我尝试将列和数据加载到我的网格中,我会得到“未捕获的类型错误:无法读取未定义的属性 'getProxy'”

控制器:

  onSqlChange: function (gridPanel, value) {
var me = this;

Ext.Ajax.request({
    url: '{url action=getSqlDetails}',
    params: {
    fileName: value
    },
    success: function (response) {
    var text = JSON.parse(response.responseText);
    //console.log(text);
    var grid = me.mainWindow.grid;
    var columns = text.columns;
    var cols = new Array();
    columns.forEach(function (item) {
        cols.push({
        name: item,
        type: 'string'
        });
    });

    var SqlResult = Ext.create('Ext.data.Store', {
        fields: cols,
        proxy: {
        type: 'ajax',
        url: '{url action=getSqlDetails}',
        reader: {
            type: 'json',
            root: 'data'
        }
        },
    });

    grid.reconfigure({
        columns: columns,
        store: SqlResult
    });
    grid.show();
    }
});
}

window.js:

Ext.define('Shopware.apps.UnSqlReader.view.window.Window', {
extend: 'Enlight.app.Window',
alias: 'widget.main-window-view',
height: 700,
width: 1200,
layout: 'fit',
title: '{s name=window_title}SQL Reader{/s}',
initComponent: function () {
var me = this;
me.items = me.getItems();
me.dockedItems = me.createDockedItems();
me.callParent(arguments);
},
createDockedItems: function () {
var me = this;
return [
    {
    width: 185,
    xtype: 'toolbar',
    dock: 'top',
    items: [
        {
        xtype: 'combobox',
        id: 'sqlField',
        editable: false,
        emptyText: 'Select SQL file',
        displayField: 'name',
        valueField: 'name',
        store: Ext.create('Shopware.apps.UnSqlReader.store.UnSqlReaderFileList'),
        listeners: {
            change: function (field, newValue) {
            me.fireEvent('onSqlChange', me, newValue);
            }
        }
        }
    ]
    }
];
},
getItems: function () {
var me = this;
me.grid = Ext.create('Ext.grid.Panel', {
    alias: 'widget.view-grid-grid',
    hidden: true,
    columns: [
    ]
});
return [me.grid];
}

});

【问题讨论】:

标签: extjs dynamic proxy grid store


【解决方案1】:

我们可以使用响应 json 中的text.data 直接填充存储中的数据,而不是再次调用 ajax

var SqlResult = Ext.create('Ext.data.Store', {
        fields: cols,
        data:text.data
    });

【讨论】:

  • 无法获得回报 i.imgur.com/JcmrdSi.png 但如果我喜欢在商店中使用它 var data = text.data;数据:数据得到相同的未定义错误我是否在我的窗口 js 的网格中定义了一个商店?
  • 没有网格仍然是空的:/作为错误我得到以下消息:未捕获的类型错误:a.on 不是一个函数,我不能使用定义..我每次 onSqlChange 都必须创建一个网格
猜你喜欢
  • 2012-06-15
  • 2015-03-30
  • 1970-01-01
  • 1970-01-01
  • 2019-03-10
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
相关资源
最近更新 更多