无法使用JavaScript在EXTJS Simplestore中加载商店数据

时间:2011-11-08 07:22:49

标签: javascript extjs

我正在尝试将数据重新加载到Store中,GridPanel进一步使用它。我的代码如下:

Ext.onReady(function(){

    myData =     [
        ['document','listsk','123','','','rat'],
        ['hiiiii','himself','rest','','','lap']
    ];

    // create the data store
    store = new Ext.data.SimpleStore({
        fields: [
            {name: 'cat'},
            {name: 'desc'},
            {name: 'edcsId'},
            {name: 'transformedEDCSUrl'},
            {name: 'transformedFormatsUrl'},
            {name: 'lineNotes'}
        ]
    });
    store.loadData(myData);

    // create the Grid
    grid = new Ext.grid.GridPanel({
        store: store,
        columns: [
           {header: "<b>Category</b>",  sortable: true, dataIndex: 'cat'},
           {header: "<b>Description or Document Title</b>", sortable: true,  dataIndex: 'desc'},
           {header: "<b>EDCS ID #</b>", sortable: true, renderer: renderEDCSUrl, dataIndex: 'edcsId'}
           {header: "<b>URLs to Formats</b>", renderer: renderFormatsUrl},
           {id: 'lineNotes', header: "<b>Line Notes</b>", sortable: true, dataIndex: 'lineNotes'}
        ],
        viewConfig: { 
            forceFit: true
        },
        autoExpandColumn: 'lineNotes',
        stripeRows: true,
        collapsible: true
    })

    reload = function refreshGrid(data){
        store.loadData(data);
    }
})

Firebug看到的mydata变量是:

[
    ['document','listsk','123','','','rat'],
    ['hiiiii','himself','rest','','','lap']
]

javascript函数refreshGrid中的数据变量也是相同的:

[
    ['document','listsk','123','','','rat'],
    ['hiiiii','himself','rest','','','lap']
]

我正在调用函数refreshGrid,如下所示:

function load(response) {  
    reload(response.substring(response.indexOf('myData') + 9, 
           response.indexOf('function renderABC') - 2));
}

对我而言,它看起来像是一个JSON解析问题,因为后端的数据正常。这是解析来自后端的JSON字符串的最佳方法。 javascript调用store.loadData的行为是数据变量中的每个字符都被视为Grid中的单独行,如下所示:

ExtJS Problem

2 个答案:

答案 0 :(得分:1)

看起来你正在为商店提供一个字符串数组,而不是它所期望的数组数组。

因此,store将数组的每个值(实际上是字符串)视为数组。一旦字符串支持索引引用(至少在非IE浏览器中),就会得到所描述的行为。

答案 1 :(得分:0)

对于所有遇到此问题的人,快速输出是eval函数,否则使用一些库来获取JSON。