这里写Ext.grid.Panel的展开与收缩。

1. 确保在grid存在rowexpander对象:

plugins: [{ ptype: 'rowexpander', rowBodyTpl: ['<div id="{Id}" class="x-inner-container"></div>'] }],

取得grid的一些信息:

var oGrid = Ext.getCmp(oGridId);
var oStore = oGrid.getStore();
var expander = oGrid.plugins[0];

2. 在grid有数据的情况下,获取到某行row是否展开的状态,true为展开状态。这个是自己初学的时候,摸索着来用的,后来,看别人的文章多了,用得多了,就熟悉了。

//大概的取得当前行的展开状态,不完全准确,我刚开始的时候就是用这个的,
//后面对grid的操作多了,什么添加行,删除行等等的,用着用就出问题了,不适用了
expander.recordsExpanded["ext-record-" + (rowIndex+1)]
var expandKey = store.data.items[rowIndex].internalId;
或
var expandKey = store.getAt(rowIndex).internalId;
expander.recordsExpanded[expandKey]

 3. grid展开或收缩,如果是展开状态时,将会收缩,就是反着来吧,这个很像Jquery的隐藏或显示toggle方法。

expander.toggleRow(rowIndex, store.getAt(rowIndex));

4. 全部收缩。全部展开的话,只要改动一下判断条件就可以了。

function CollapseAll(){
    var oGrid = Ext.getCmp(oGridId);
    var oStore = oGrid.getStore();
    var expander = oGrid.plugins[0];
    for(var i=0,l= oStore.getCount(); i<l; i++){
        if(expander.recordsExpanded[oStore.getAt(i).internalId])
            expander.toggleRow(i, oStore.getAt(i));
    }
}

 

posted on 2020-03-20 11:26  欲穷  阅读(1028)  评论(0编辑  收藏  举报