首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不从Ext.data.XmlStore加载数据的ExtJS网格

不从Ext.data.XmlStore加载数据的ExtJS网格
EN

Stack Overflow用户
提问于 2012-08-25 00:19:40
回答 2查看 2K关注 0票数 1

我有一个试图用XmlStore填充的网格,它是用Xml字符串填充的。到目前为止,存储似乎可以很好地加载XML,但我无法让网格加载存储。(即grid.getStore().getCount()始终为0。

代码语言:javascript
复制
// create the Data Stores for use by the grid
Ext.define('InterfaceModel', {
    extend: 'Ext.data.Model',
    fields: [
        { name: 'id', mapping: 'id' },
        { name: 'InterfaceName', mapping: 'InterfaceName' },
        { name: 'TX_OCTETS', mapping: 'TX_OCTETS' },
        { name: 'TX_BAD_OCTETS', mapping: 'TX_BAD_OCTETS' },
        { name: 'TX_FRM', mapping: 'TX_FRM' },
        { name: 'TX_BAD_FRM', mapping: 'TX_BAD_FRM' },
        { name: 'TX_MCAST', mapping: 'TX_MCAST' },
        { name: 'TX_BCAST', mapping: 'TX_BCAST' },
        { name: 'TX_PAUSE', mapping: 'TX_PAUSE' }
    ],
    idProperty: 'id'
});

我的XML如下:

代码语言:javascript
复制
var gridData = '<?xml version="1.0" encoding="UTF-8"?> <Interfaces> <Interface> <id>1</id> <InterfaceName>GMAC1</InterfaceName> <TX_OCTETS>123234</TX_OCTETS> <TX_BAD_OCTETS>234</TX_BAD_OCTETS> <TX_FRM>234234</TX_FRM> <TX_BAD_FRM>2341</TX_BAD_FRM> <TX_MCAST>23</TX_MCAST> <TX_BCAST>56</TX_BCAST> <TX_PAUSE>8</TX_PAUSE></Interface> <Interface> <id>2</id> <InterfaceName>GMAC2</InterfaceName> <TX_OCTETS>123234</TX_OCTETS> <TX_BAD_OCTETS>234</TX_BAD_OCTETS> <TX_FRM>234234</TX_FRM> <TX_BAD_FRM>2341</TX_BAD_FRM> <TX_MCAST>23</TX_MCAST> <TX_BCAST>56</TX_BCAST> <TX_PAUSE>8</TX_PAUSE></Interface></Interfaces>';

var gridDataXml = (new DOMParser()).parseFromString(gridData,'text/xml');

console.log ('xml', gridDataXml);  // everything looks fine

然后,我使用内存代理XML阅读器定义我的存储:

代码语言:javascript
复制
var eioaGridStore = new Ext.data.XmlStore({
    model: 'InterfaceModel',
    autoLoad: true,
    proxy: {
        type: 'memory',
        reader: {
            type: 'xml',
            root: 'Interfaces',
            record: 'Interface',
            idProperty: 'id'
        }
    }
});

然后将解析后的XML DOM加载到存储中:

代码语言:javascript
复制
eioaGridStore.loadRawData(gridDataXml);

如果我在商店上使用getCount(),它会正确地返回2。

从Web Inspector查看商店显示了2个数组(我希望在我的网格中是行)(请原谅格式)

代码语言:javascript
复制
store 
Object
data: Object
allowFunctions: false
events: Object
generation: 3
getKey: function (record) {
hasListeners: Object
items: Array[2]
0: Object
data: Object
dirty: false
events: Object
hasListeners: Object
id: "InterfaceModel-1"
internalId: "1"
modified: Object
phantom: false
raw: Element
store: Object
stores: Array[1]
__proto__: Object
1: Object
length: 2
__proto__: Array[0]
keys: Array[2]
length: 2
map: Object
sorters: Object
__proto__: Object
events: Object
eventsSuspended: 0
filters: Object
groupers: Object
hasListeners: Object
model: function i() {return this.constructor.apply(this,arguments)||null;}
modelDefaults: Object
pageSize: 25
proxy: Object
removed: Array[0]
sorters: Object
totalCount: 2
__proto__: Object

我的网格组件如下:

代码语言:javascript
复制
createGrid: function () {
    var me = this;

    return {
        id: 'eioaGrid',
        xtype: 'grid',
        border: true,
        store: this.eioaGridStore,
        columns: [{
            header: 'Interface',
            dataIndex: 'InterfaceName',
            align: 'center',
            sortable: true,
            tooltip: 'Axxia Interface'
        }, {
            text: 'OCTETS',
            sortable: false,
            width: 100,
            tooltip: 'Total number of octets in all frames.',
            columns: [{
                header: 'TX',
                width: 50,
                align: 'center',
                sortable: true,
                dataIndex: 'TX_OCTETS',
                tooltip: 'Transmitted'
            }]
        }, {
            text: 'BAD OCTETS',
            sortable: false,
            width: 100,
            tooltip: 'Total number of octets in all bad frames.',
            columns: [{
                header: 'TX',
                width: 50,
                align: 'center',
                sortable: true,
                dataIndex: 'TX_BAD_OCTETS',
                tooltip: 'Transmitted'
            }]
        }, {
            text: 'FRAMES',
            sortable: false,
            width: 100,
            tooltip: 'Total number of frames.',
            columns: [{
                header: 'TX',
                width: 50,
                align: 'center',
                sortable: true,
                dataIndex: 'TX_FRM',
                tooltip: 'Transmitted'
            }]
        }, {
            text: 'BAD FRAMES',
            sortable: false,
            width: 100,
            tooltip: 'Total number of bad frames.',
            columns: [{
                header: 'TX',
                width: 50,
                align: 'center',
                sortable: true,
                dataIndex: 'TX_BAD_FRM',
                tooltip: 'Transmitted'
            }]
        }, {
            text: 'MULTICAST',
            sortable: false,
            width: 100,
            tooltip: 'Multicast Frames: good non-pause frames with a multicast destination address which is not the broadcast address.',
            columns: [{
                header: 'TX',
                width: 50,
                align: 'center',
                sortable: true,
                dataIndex: 'TX_MCAST',
                tooltip: 'Transmitted'
            }]
        }, {
            text: 'BROADCAST',
            sortable: false,
            width: 100,
            tooltip: 'Broadcast Frames: good frames with the broadcast destination address.',
            columns: [{
                header: 'TX',
                width: 50,
                align: 'center',
                sortable: true,
                dataIndex: 'TX_BCAST',
                tooltip: 'Transmitted'
            }]
        }, {
            text: 'PAUSE',
            sortable: false,
            width: 100,
            tooltip: 'Pause Frames: pause frames internally generated by the MAC.',
            columns: [{
                header: 'TX',
                width: 50,
                align: 'center',
                sortable: true,
                dataIndex: 'TX_PAUSE',
                tooltip: 'Transmitted'
            }]
        }]
    };
}

稍后,我通过网格的存储执行getCount(),它返回为空。

代码语言:javascript
复制
console.log('grid store count', Ext.getCmp('eioaGrid').store.getCount());

有什么想法吗?已经被难倒了几天了,我快疯了!谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-25 12:21:20

我刚找到它..。我在设置网格存储时对this.eioaGridStore的引用:不在作用域内(未定义)...现在一切都正常了。

票数 0
EN

Stack Overflow用户

发布于 2012-08-25 03:06:53

只是胡乱猜测,因为我没有加载你的代码,但可能会从存储定义中删除自动加载,因为你是手动执行的?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12113119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档