這里寫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)); } }