2012-05-22 36 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

相关问题