Extjs:仅当另一个字段具有值时显示复选框

时间:2012-05-22 10:45:39

标签: javascript extjs extjs4 extjs3

我有一个带有checkboxcolumn的网格,一切正常,但我想只显示另一个字段有一定值的复选框。我使用3.3.1版本,但我想从另一个版本的例子将让我开始。 如果不可能,禁用该复选框也没关系。 我必须在渲染器或听众中这样做吗?

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, 
  .... 

2 个答案:

答案 0 :(得分: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...
   }
})

答案 1 :(得分: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>';
  }
}