ExtJS 5 - 如何传递参数以存储在扩展行中?
ExtJS 5 - How do I pass parameter to store in expanded row?
我正在查看有关 rowexapnder fiddle 的示例,它展示了如何使用行 exapnder 嵌套网格。
我想每行获取不同的数据,这意味着将 id 参数发送到嵌套行。
这是嵌套行的代码:
如何将 id 添加到 personStore 以便每个扩展的节目将具有不同的数据(并且与fiddle)
exapndInnerGrid : function(record) {
var id = record.get('id');
var row = Ext.get('empDivId-' + record.get('name'));
if (!row.dom.childNodes.length) {
Ext.create('Ext.grid.Panel', {
store: personStore,
plugins: {
ptype: 'cellediting',
clicksToEdit: 1
},
columns: [{
text: 'WorkName',
dataIndex: 'workName',
locked: true
}, {
text: 'Designation',
dataIndex: 'designation'
}, {
text: 'Salary',
dataIndex: 'salary',
editor: {
xtype: 'numberfield',
allowBlank: false,
minValue: 0,
maxValue: 100000
}
}, {
text: 'Gender',
dataIndex: 'gender',
lockable: false
}],
height: 150,
width: 400,
renderTo: row
});
}
}
试试这样的 - fiddle(我修改了你提供的 fiddle 并做了一些更改)
如果 personStore 已经加载,那么每当您展开一行时应用过滤器,然后创建一个临时存储并将过滤的记录添加到该存储并将临时存储用于内部网格。
exapndInnerGrid : function(record) {
var row = Ext.get('empDivId-' + record.get('name'));
var name = record.get('name');
if (!row.dom.childNodes.length) {
//personStore.clearFilter();
personStore.filter('workName', name);
var personStore2 = Ext.create('Ext.data.Store', {
fields: [{
name: 'workName'
}, {
name: 'designation'
}, {
name: 'salary'
}, {
name: 'gender'
}]
});
personStore2.add(personStore.getRange());
Ext.create('Ext.grid.Panel', {
store: personStore2,
plugins: {
ptype: 'cellediting',
clicksToEdit: 1
},
columns: [{
text: 'WorkName',
dataIndex: 'workName',
locked: true
}, {
text: 'Designation',
dataIndex: 'designation'
}, {
text: 'Salary',
dataIndex: 'salary',
editor: {
xtype: 'numberfield',
allowBlank: false,
minValue: 0,
maxValue: 100000
}
}, {
text: 'Gender',
dataIndex: 'gender',
lockable: false
}],
height: 150,
width: 400,
renderTo: row
});
}
}
我正在查看有关 rowexapnder fiddle 的示例,它展示了如何使用行 exapnder 嵌套网格。
我想每行获取不同的数据,这意味着将 id 参数发送到嵌套行。
这是嵌套行的代码:
如何将 id 添加到 personStore 以便每个扩展的节目将具有不同的数据(并且与fiddle)
exapndInnerGrid : function(record) {
var id = record.get('id');
var row = Ext.get('empDivId-' + record.get('name'));
if (!row.dom.childNodes.length) {
Ext.create('Ext.grid.Panel', {
store: personStore,
plugins: {
ptype: 'cellediting',
clicksToEdit: 1
},
columns: [{
text: 'WorkName',
dataIndex: 'workName',
locked: true
}, {
text: 'Designation',
dataIndex: 'designation'
}, {
text: 'Salary',
dataIndex: 'salary',
editor: {
xtype: 'numberfield',
allowBlank: false,
minValue: 0,
maxValue: 100000
}
}, {
text: 'Gender',
dataIndex: 'gender',
lockable: false
}],
height: 150,
width: 400,
renderTo: row
});
}
}
试试这样的 - fiddle(我修改了你提供的 fiddle 并做了一些更改) 如果 personStore 已经加载,那么每当您展开一行时应用过滤器,然后创建一个临时存储并将过滤的记录添加到该存储并将临时存储用于内部网格。
exapndInnerGrid : function(record) {
var row = Ext.get('empDivId-' + record.get('name'));
var name = record.get('name');
if (!row.dom.childNodes.length) {
//personStore.clearFilter();
personStore.filter('workName', name);
var personStore2 = Ext.create('Ext.data.Store', {
fields: [{
name: 'workName'
}, {
name: 'designation'
}, {
name: 'salary'
}, {
name: 'gender'
}]
});
personStore2.add(personStore.getRange());
Ext.create('Ext.grid.Panel', {
store: personStore2,
plugins: {
ptype: 'cellediting',
clicksToEdit: 1
},
columns: [{
text: 'WorkName',
dataIndex: 'workName',
locked: true
}, {
text: 'Designation',
dataIndex: 'designation'
}, {
text: 'Salary',
dataIndex: 'salary',
editor: {
xtype: 'numberfield',
allowBlank: false,
minValue: 0,
maxValue: 100000
}
}, {
text: 'Gender',
dataIndex: 'gender',
lockable: false
}],
height: 150,
width: 400,
renderTo: row
});
}
}