Javascript 无法使用loadData()在ExtJS gridpanel中加载数据
我需要定期在网格存储中添加新数据。存储由以下代码定义:Javascript 无法使用loadData()在ExtJS gridpanel中加载数据,javascript,extjs,store,gridpanel,Javascript,Extjs,Store,Gridpanel,我需要定期在网格存储中添加新数据。存储由以下代码定义: this.reader = new Ext.data.JsonReader({ idProperty: 'id', fields: this.lesFields }); this.ds = new Ext.data.GroupingStore({ reader: this.reader, data: this.leData, sortInfo: {fie
this.reader = new Ext.data.JsonReader({
idProperty: 'id',
fields: this.lesFields
});
this.ds = new Ext.data.GroupingStore({
reader: this.reader,
data: this.leData,
sortInfo: {field: 'dendisc', direction: 'ASC'},
groupField: 'categorie'
});
当我需要附加一些新数据时,我使用this.getStore().loadData(this.leData)
来完成。从技术上讲,数据确实出现在网格的存储中,但我在显示屏上只看到零(在int
字段中)和空白字符串(在字符串
字段中)。我在Chrome的控制台上做了一些研究,发现data
属性和json
属性在this.getStore().data
中不一样。在json
中有一个包含有效数据的数组,但在data
中只有零和空白字符串
我错过什么了吗?
handleAs:'json'
属性是否可以挽救这种情况?我不习惯对存储进行分组,但我认为读者希望看到一个类似于{Id:0,Name:'MyName'}
的json对象或一组这样的对象,然后尝试将它们与注册的字段名进行匹配。但我不知道数组中有什么,所以这只是一个猜测,JsonReader需要定义根。root指向包含记录的子属性
以下是取自ext文档的示例:
var myReader = new Ext.data.JsonReader({
idProperty: 'id'
root: 'rows',
totalProperty: 'totalRows',
fields: [
{name: 'id' },
{name: 'name' }
]
});
以及要读取的样本数据:
{
success: true,
totalRows: 100,
rows: [ // root
{ id: 1, name: 'Alf' },
{ id: 2, name: 'Ben' },
{ id: 3, name: 'Cod' },
...
]
}
如何准确定义要加载的数据?
data
和json
属性的完整路径是this.getStore().data.items[i]
@sra,抱歉,我无法发布屏幕截图this.leData
看起来像[Array[28],Array[28],Array[28],Array[28]]
。请看,读者是否能够识别数据。请参阅@Giku Yes,它会重新确认有数据,并尝试读取数据,但读卡器似乎无法将数据映射到相应的字段。因此,它可以识别数据,但无法匹配它,因此您只能得到空记录。现在你的数组中有JSON对象还是只有值?@Giku没关系,也许我完全错了,但是如果这个=>array[28]
的内容与图像匹配,意味着这只是28个值的集合,读者如何知道哪个值属于哪个字段。。。所以他只是插入了一个空记录。据我所知,读者需要一个带有{field:'value'}
@Giku的json对象,这就是我询问您试图加载的数据的更多细节的方式。非常感谢您的反馈,sra。你是对的,读者找不到与我附加的数据相匹配的。我搜索了一个解决方案,以便将数组[…]
转换为对象{…}
。我找到了一个函数,并对它做了一些修改。现在,数据的显示方式正是它应该显示的。再次感谢sra,祝您愉快。如果一切正常,您应该检查字段定义。