下面是我尝试使用商店中的JSon Reader加载某些记录的代码。 我无法在网格上看到这个。 能不能指出我错过了什么,因为我不想使用代理/网址为JSon。
var itemsPerPage = 10;
Ext.Loader.setConfig({enabled: true});
Ext.require([
'Ext.grid.*',
'Ext.data.*',
'Ext.util.*',
'Ext.toolbar.Paging'
]);
Ext.define('Assemble', {
extend: 'Ext.data.Model',
fields: [
{name: 'lot_no', type: "string"}
],
idProperty: 'lot_no'
});
Ext.onReady(function() {
Ext.QuickTips.init();
var jsonString = '{"result":[{"lot_no":"MT6261"},{"lot_no":"MT6262"},{"lot_no":"MT6263"}]}';
// create the data store
var store = Ext.create('Ext.data.Store', {
pageSize: itemsPerPage,
proxy:{
type: 'ajax',
reader: {
type: 'json',
root: 'result',
model: Assemble
}
}
});
store.loadData(Ext.decode(jsonString));
console.log(store);
var pagingToolbar = Ext.create('Ext.PagingToolbar',{
pageSize: itemsPerPage,
store: store,
displayInfo: true,
displayMsg: ' {0}-{1},{2}',
emptyMsg: "empty."
});
// create the Grid
var grid = Ext.create('Ext.grid.Panel', {
store: store,
disableSelection: true,
loadMask: true,
columns: [
{
text : 'LOT_NO',
flex : 1,
sortable : true,
dataIndex: 'lot_no'
}
],
bbar : pagingToolbar,
renderTo: 'grid',
viewConfig: {
stripeRows: true,
enableTextSelection: true
}
});
store.loadPage(1);
});
答案 0 :(得分:0)
代理必须与url一起使用。所以,你不能像这样使用代理。我删除了代理,将模型放在商店中,你必须将对象加载到商店,但在你的情况下包含rootProperty('result',我只获取主要对象,或者你可以从jsonString中删除'结果')。然后,它工作。 Chck这个小提琴:
https://fiddle.sencha.com/#fiddle/11or
#logo {
display:inline-block;
transform: scale(1.3);
margin-left:50px;
}
答案 1 :(得分:0)
为什么你甚至使用读卡器?您的数据是本地数据,因此只需解码字符串并传入您想要的内容:
https://fiddle.sencha.com/#fiddle/11qc
此外,您的数据是本地数据,因此不需要分页工具栏。在Ext JS 5+中,网格将使用缓冲渲染器(如果网格具有从高度/宽度配置或从父布局定义的大小),因此将所有数据加载到存储中不会影响性能(除了创建记录) 。网格只会呈现可见的内容以及两边的几个。