Extjs Grid使某些行不可编辑

时间:2014-03-17 07:12:40

标签: extjs extjs3

我是Extjs的新手,我正在使用版本3.2,我有Extjs Grid,其中包含一些列名称,用户名,状态,........

如果状态字段的值为0,那么我想要的是整行不可编辑

以下是我的网格代码

var grid = new Ext.grid.GridPanel({
                    store : store,
                    disableSelection: true,
                    id : "documentsGrid",
                    columns : [

                            {
                                header : "Name",
                                width : 120,
                                sortable : true,
                                dataIndex : 'Name',
                                renderer: function (value, metaData, record, rowIndex, colIndex, store) {
                                     return  getToolTip(value, metaData, record, rowIndex, colIndex, store);
                                },
                                editor : {
                                    xtype : 'textfield',
                                    allowBlank : true
                                }
                            },
                            {
                                header : "UserName",
                                width : 120,
                                sortable : true,
                                dataIndex : 'UserName',
                                renderer: function (value, metaData, record, rowIndex, colIndex, store) {
                                     return  getToolTip(value, metaData, record, rowIndex, colIndex, store);
                                },
                                editor : {
                                    xtype : 'textfield',
                                    allowBlank : true
                                }
                            },
                            {
                                header : "Status",
                                width : 120,
                                sortable : true,
                                dataIndex : 'Status',
                                renderer: function (value, metaData, record, rowIndex, colIndex, store) {
                                     return  getToolTip(value, metaData, record, rowIndex, colIndex, store);
                                },
                                editor : {
                                    xtype : 'textfield',
                                    allowBlank : true
                                }
                            }},
                             ],
                            listeners : {
                                'rowdblclick' : dblclickDisableEditor,
                                },

                    viewConfig : {
                        forcefit : true,
                        deferEmptyText: false,
                        emptyText: 'No data Available',
                    },
                    plugins : [ editor ],
                    title : 'Title',
                    height : 500,
                    width : 929,
                    frame : false,
                    tbar : new Ext.Toolbar()
                }); 

由于

1 个答案:

答案 0 :(得分:0)

您需要将ColumnModel添加到网格中并实现它的isCellEditable方法。这是文档

的代码片段
var store = new Ext.data.Store({...});
var colModel = new Ext.grid.ColumnModel({
  columns: [...],
  isCellEditable: function(col, row) {
    var record = store.getAt(row);
    if (record.get('readonly')) { // replace with your condition
      return false;
    }
    return Ext.grid.ColumnModel.prototype.isCellEditable.call(this, col, row);
  }
});
var grid = new Ext.grid.GridPanel({
  store: store,
  colModel: colModel,
  ...
});