2012-05-22 35 views
0

我有一個複選框列的網格,所有工作正常,但我想只顯示覆選框,如果另一個字段有一定的價值。我使用的是3.3.1版本,但我想來自另一個版本的例子會讓我開始。 如果不可行,禁用複選框也可以。 我必須在渲染器或偵聽器中執行該操作嗎?Extjs:只顯示覆選框時,另一個字段有一個值

var checkColumn = new Ext.grid.CheckColumn({ 
header: 'Checklist OK ?', 
dataIndex: 'checklist_ok', 
width: 20, 
align: 'center' 
}); 

cmDiverse = new Ext.grid.ColumnModel({ 
defaults: {"sortable": true, "menuDisabled":false, "align":"right"}, 
store: storeDiverse, 
columns: [ 
    {"id":"id", "header": "id", "hidden": true, "dataIndex": "id", "width": 20}, 
    checkColumn, 
    ... 

gridDiverse = new Ext.ux.grid.livegrid.EditorGridPanel({ 
    id    : "gridDiverse", 
    enableDragDrop : false, 
    loadMask  : true, 
    clicksToEdit : 1, 
    layout   :'anchor', 
    cm    : cmDiverse, 
    .... 
+0

你需要在運行時顯示和不顯示列之間切換? – AMember

+0

不,列是可見的,但有些記錄需要複選框,其他人不需要 – peter

回答

1

找到它自己,增加了以下渲染器checkColumn

renderer : function(v, p, record){ 
    var type3m = record.get('type3m'); 
    if ((['6M','11e']).indexOf(String(type3m)) != -1){ //if the field type3m contains certain values 
    p.css += ' x-grid3-check-col-td'; 
    return '<div class="x-grid3-check-col'+(v?'-on':'')+' x-grid3-cc-'+this.id+'"> </div>'; 
    } 
} 
1

您可擴展Ext.ux.grid.livegrid.EditorGridPanel這樣的:

Ext.extend(Ext.ux.grid.livegrid.EditorGridPanel,{ 
    constructor:function(config){ 
     config = Ext.apply({ 
      cm: this.createColumnModel() 
     },config); 
    }, 
    createColumnModel: function(){ 
     PUT YOUR LOGIC HERE AND RETURN AN ARRAY OF COLUMNS... 
    } 
}) 
+0

謝謝,但是如何顯示或隱藏某些記錄的複選框?我想你的方法可以顯示或隱藏整個列。 – peter

相關問題