2

誰かが私を助けてくれることを願っています。

グリッドに xml ファイルのデータをローカルでロードしたいと考えています。モデル、ストア、グリッドを作成しました。グリッドのレンダリング イベントでストアを読み込みます。

問題は、Store がロードされているが、グリッドがまだ空であることです。コンソールでグリッドを見たところ、グリッド アイテムには読み込まれたデータが含まれていますが、グリッドには画面上のデータが含まれていません。

モデルはこちら

Ext.define('BTOM.model.test.test', {
    extend: 'Ext.data.Model',
    fields: [
        { name: 'id', type: 'string' },
        { name: 'name', type: 'string' },
        { name: 'phone', type: 'string' }
    ]
});

店舗はこちら

Ext.define('BTOM.store.test.test', {
    extend: 'Ext.data.Store',
    model: 'BTOM.model.test.test',
    autoLoad: false,

    proxy: {
        type: 'memory',
        reader: {
            type: 'xml',
            root: 'users',
            record: 'user'
        }
    }
});

そしてグリッド

Ext.define('BTOM.view.test.test', {
    extend: 'Ext.grid.Panel',
    store: 'BTOM.store.test.test',
    alias: 'widget.test',
    title: 'Test',

    initComponent: function () {

        this.columns =
        [
            { header: "Id", width: 120, dataIndex: 'id', sortable: false },
            { header: "Name", width: 180, dataIndex: 'name', sortable: false },
            { header: "Phone", width: 115, dataIndex: 'phone', sortable: false}
        ];

        this.callParent(arguments);
    },
});

そして、ストアをロードする場所は

render: function (grid, eOpts) {
    var store = grid.getStore();
    var data =
        '<?xml version="1.0" encoding="utf-8"?>' +
           '<users> ' +
              '<user><id>1</id><name>Bll QASD</name><phone>333 2211</phone></user> ' +
              '<user><id>2</id><name>Asd QWF</name><phone>444 2211</phone></user> ' +
              '<user><id>3</id><name>Zas QWE</name><phone>555 2211</phone></user> ' +
           '</users>';
        var dataXml = (new DOMParser()).parseFromString(data, 'text/xml');
    console.log(dataXml);
    store.loadRawData(dataXml, true);
    console.log(grid);

}

dataXML ドキュメントは問題なく作成されます。グリッドにはデータが含まれているようですが (firebug によるとわかります)、データグリッドは空で、データは表示されません!

4

1 に答える 1

0

OK、エラーは、ストアを定義しているが作成していないことです。したがって、グリッドにはストアの名前しかありませんが、ストア インスタンスが必要です。または、上記のコード スニペットで見落としているものがあります。私は同じコードを使用しました。ここに実行例があります: https://fiddle.sencha.com/#fiddle/oel

于 2015-06-11T06:41:27.653 に答える