我正在努力完成一些听起来很简单的事情,但我找不到解决方案。
我在缓冲商店和rowExpander插件前面有一个网格。一切都运行正常,但我想在商店中根据属性(在这种情况下是一个简单的布尔值)打开扩展器默认值。通常情况下,我最初会遍历所有记录,但由于它是一个缓冲存储,我最初没有所有记录。
我可以挂入bufferedRenderer吗?
有什么建议吗?提前谢谢!
以下小提琴具有以下代码,当answercount>时将尝试展开。 1
prefetch: function (store, records, successful, operation, eOpts) {
console.log('in prefetch')
var grid = Ext.ComponentQuery.query('#testGrid')[0];
var pluggy = grid.getPlugin('rowexpander')
for (var i in records) {
if (records[i].get('replycount') > 1) {
console.log(records[i].get('replycount') + ': is greater than 1...so expand');
var rIndex = store.indexOf(records[i]);
pluggy.toggleRow(rIndex, records[i]);
} else {
//console.log(records[i].get('replycount') + ': is not greater than 1...so no expand');
}
}
}
添加小提琴:link
答案 0 :(得分:0)
您可以使用load
ExtJS Store
事件。只要加载记录,就会触发此事件。
load: function (store, records, successful, operation, eOpts) {
var grid = Ext.ComponentQuery.query('#testGrid')[0];
var pluggy = grid.getPlugin('rowexpander')
for (var i in records) {
if (records[i].get('replycount') > 1) {
console.log(records[i].get('replycount') + ': is greater than 1...so expand');
var rIndex = store.indexOf(records[i]);
pluggy.toggleRow(rIndex, records[i]);
} else {
//console.log(records[i].get('replycount') + ': is not greater than 1...so no expand');
}
}
}
我尝试过不同的方法。您可以在没有dataindex
的情况下编写一列,并在该列的renderer
上展开原始列。
{
sortable: false,
//hidden : true,
width : 0,
hideable : false,
renderer : function (v, metaData, record, rowIndex, colIndex, store, view) {
Ext.defer(function(){
try{
var grid = view.up('grid');
var pluggy = grid.getPlugin('rowexpander');
if (record.get('replycount') > 1) {
pluggy.toggleRow(rowIndex, record);
} else {
//console.log(records[i].get('replycount') + ': is not greater than 1...so no expand');
}
}catch(e){}
},1000);
}
}
我更新了同样的小提琴。
注意:这只是一种解决方法。