下面的代码采用了一个数据存储区,该数据存储区用于在平面视图中保存Windows注册表项(我不需要树视图)。
键的列用于分组,一旦展开键,就可以查看该键下的所有值。这些值根据获取的得分(外部)进行着色,得分存储在“结果”字段中。
我的问题
我希望只有在所有值的分数都大于0.0时才折叠键,否则必须展开键。
我如何/在哪里实现逻辑来引发组并决定是否将其折叠/展开?
谢谢你!
Ext.onReady (function () {
var store = Ext.create('Ext.data.Store', {
storeId:'registryStore',
// model
fields:['result', 'key', 'type','value','data'],
// enable grouping for the data Store
groupField: 'key',
// the data itself in JSON format
data: {'regkeys':[.....data...]},
// define the JSON data type
proxy: {
type: 'memory',
reader: {
type: 'json',
root: 'regkeys'
}
}
});
// grouping
var grouping = Ext.create('Ext.grid.feature.Grouping',{
startCollapsed: true,
});
var regPanel = Ext.create('Ext.grid.Panel', {
title: 'Registry',
renderTo: Ext.getBody(),
// link to grouping object
features: [grouping],
store: Ext.data.StoreManager.lookup('registryStore'),
// model
columns: [
{ header: 'Result', dataIndex: 'result'},
{ header: 'Type', dataIndex: 'type' },
{ header: 'Value', dataIndex: 'value', width:250,felx:1},
{ header: 'Data', dataIndex: 'data', flex:1}
],
// color's each row according to score
viewConfig: {
getRowClass: function(record, rowIndex, rowParams, store) {
if (record.get("result") == 0.0) { // orange background
return 'row-unknown';
}
else if (record.get("result") < 0.0) { // red background
return 'row-bad';
}
return 'row-good'; // green background
}
},
// collapse/expand all botton
tbar: [{
text: 'collapse all',
handler: function (btn) {
grouping.collapseAll();
}
},{
text: 'expand all',
handler: function (btn) {
grouping.expandAll();
}
}],
}); //Ext.create
}); //Ext.onReady
1条答案
按热度按时间sg3maiej1#
我找到了答案,这是非常黑客的,因为ExtJS不允许在网格呈现之前编辑分组状态,因此我们需要在网格处理之后呈现。我在Ext.Grid.Panel的代码中添加了以下代码:
希望能帮上忙。