这里写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)); } }