如何在渲染后动态更改ExtJS GridPanel viewconfig上的getRowClass函数

fru*_*rdc 5 extjs extjs4

我有Ext.grid.Panel一个函数返回一个自定义类,用于通过重写getRowClass函数对网格中的行进行颜色编码.这很好用,但我想让用户可以选择更改网格着色的标准.下面的示例,我按"严重性"属性着色,但我想将其更改为"状态",例如.有没有一种方法,我可以动态改变的getRowClass功能,或对电网可能整个viewconfig,并有电网改色,电网已经被渲染后?

alarmsGrid = Ext.create('Ext.grid.Panel', {
    title: 'Netcool Alarms',
    id: 'Netcool Alarms',
    columnLines: true,
    store: alarms_store,
    loadMask: true,
    stripeRows: true,
    features: [alarmsGroupingFeature],
    viewConfig: {
        getRowClass: function(record, rowIndex, rowParams, store){
          return record.get('severity').toLowerCase();
        }
    },
Run Code Online (Sandbox Code Playgroud)

sra*_*sra 4

这只是因为你的做法是错误的。几乎所有类型的配置对象仅在类的实例化时相关,并且之后不会产生任何影响。所以你需要获取视图实例本身来直接更改那里的属性(方法)。要从评论中获取示例,您需要这样写

alarmsGrid.getView().getRowClass = function(record, rowIndex, rowParams, store){ 
     return record.get('status').toLowerCase(); 
}
Run Code Online (Sandbox Code Playgroud)

参见JSFiddle