我正在尝试将数据重新加载到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中的单独行,如下所示:
答案 0 :(得分:1)
看起来你正在为商店提供一个字符串数组,而不是它所期望的数组数组。
因此,store将数组的每个值(实际上是字符串)视为数组。一旦字符串支持索引引用(至少在非IE浏览器中),就会得到所描述的行为。
答案 1 :(得分:0)
对于所有遇到此问题的人,快速输出是eval函数,否则使用一些库来获取JSON。