是否可以在ExtJS 4.1.x中执行此过程?
var myMixedCollection = myStore.queryBy(...);
var anotherStore = Ext.create('Ext.data.Store', { data: myMixedCollection, ... });
var myGrid = Ext.create('Ext.grid.Panel', { store: anotherStore, ... });
因为我的网格没有显示任何内容或仅显示一个空行
当我记录myMixedCollection
时,所有数据都没有问题,但是当我用Firebug打开我的anotherStore
时,我可以看到我的数据存储中只有一个空行。
答案 0 :(得分:7)
myMixedCollection
将是记录集合(模型实例),只要新商店具有相同的模型集,这将起作用!所以答案是是
嗯,您肯定需要在myMixedCollection
个实例上调用 getRange()
这是一个工作示例
// Set up a model to use in our Store
Ext.define('Simpson', {
extend: 'Ext.data.Model',
fields: [
{name: 'name', type: 'string'},
{name: 'email', type: 'string'},
{name: 'phone', type: 'string'}
]
});
var s1 = Ext.create('Ext.data.Store', {
model:'Simpson',
storeId:'simpsonsStore',
fields:['name', 'email', 'phone'],
data:{'items':[
{ 'name': 'Lisa', "email":"lisa@simpsons.com", "phone":"555-111-1224" },
{ 'name': 'Bart', "email":"bart@simpsons.com", "phone":"555-222-1234" },
{ 'name': 'Homer', "email":"home@simpsons.com", "phone":"555-222-1244" },
{ 'name': 'Marge', "email":"marge@simpsons.com", "phone":"555-222-1254" }
]},
proxy: {
type: 'memory',
reader: {
type: 'json',
root: 'items'
}
}
});
var mixed = s1.queryBy(function(rec){
if(rec.data.name == 'Lisa')
return true;
});
var s1 = Ext.create('Ext.data.Store', {
model:'Simpson',
storeId:'simpsonsStore2',
fields:['name', 'email', 'phone'],
data: mixed.getRange(),
proxy: {
type: 'memory',
reader: {
type: 'json'
}
}
});
Ext.create('Ext.grid.Panel', {
title: 'Simpsons',
store: Ext.data.StoreManager.lookup('simpsonsStore2'),
columns: [
{ text: 'Name', dataIndex: 'name' },
{ text: 'Email', dataIndex: 'email', flex: 1 },
{ text: 'Phone', dataIndex: 'phone' }
],
height: 200,
width: 400,
renderTo: Ext.getBody()
});
和 JSFiddle
答案 1 :(得分:2)
是的,这是可能的。
试试这个:
//this is the model we will be using in the store
Ext.define('User', {
extend: 'Ext.data.Model',
fields: [
{name: 'id', type: 'int'},
{name: 'name', type: 'string'},
{name: 'phone', type: 'string', mapping: 'phoneNumber'}
]
});
var data = new Ext.util.MixedCollection();
data.add('key1', {
id: 1,
name: 'Ed Spencer',
phoneNumber: '555 1234'
});
data.add('key2', {
id: 2,
name: 'Abe Elias',
phoneNumber: '666 1234'
});
//note how we set the 'root' in the reader to match the data structure above
var store = Ext.create('Ext.data.Store', {
model: 'User',
data : data.items,
proxy: {
type: 'memory',
reader: {
type: 'json',
root: 'users'
}
}
});
store.each(function(record){
console.log(record.get("name"));
});
你可以在jsfiddle上看到它:http://jsfiddle.net/lontivero/Lf9yv/1/