2012-08-09 20 views
0

我正在使用Extjs4.1.0。extjs4.1.0的動作列

我有一個帶有動作列的網格。我必須根據某些條件更改此動作列中的圖標。

我正在使用三個getClass方法來呈現此列中的圖標。

xtype: 'actioncolumn', 
items: [ 
{ 
    getClass: function (v, meta, rec) 
    { 
     if (rec.get('fieldDeleteFlag') == false) return 'x-grid-del-css'; 
     else return ''; 
    }, 
    handler: function (grid, rowIndex, colIndex) 
    { 
     alert('delete'); 
    } 
},{ 
    getClass: function (v, meta, rec) 
    { 
     if (rec.get('fieldDeleteFlag') == false) return 'x-grid-edit-css'; 
     else return ''; 
     handler: function (grid, rowIndex, colIndex) 
     { 
      alert('edit'); 
     } 
},{ 
    getClass: function (v, meta, rec) 
    { 
     if (rec.get('fieldDeleteFlag') == true) return 'x-grid-activate-css'; 
     else return ''; 
    } 
    handler: function (grid, rowIndex, colIndex) 
    { 
     alert('Activate'); 
    } 
}],  

grid.getStore().getAt(rowIndex).set('change',false); 

所以,如果標誌爲假,我需要有兩個圖標作爲編輯和刪除。如果國旗是真的,我只激活圖標。

當我點擊激活圖標處理程序,我將設置標誌列爲false,我只有該行的編輯和刪除圖標。

當網格呈現時,圖標即將完美呈現。但是,當我點擊激活處理程序時,我無法刪除激活圖標並顯示編輯和刪除圖標。

任何機構可以告訴我如何做到這一點...

+0

此代碼在Ext4.1.1中工作,但它不在Ext4.1.0中工作 – 2012-08-10 08:08:01

回答

0

您可以設置單元格的值之後使用grid.refresh()

handler: function(grid, rowIndex, colIndex) { 
    var rec = store.getAt(rowIndex); 
    var change = rec.get('change'); 
    rec.set('change', -change); 
    grid.refresh(); 
}