获取与存储Extjs4无关的列的值

时间:2014-04-02 10:03:53

标签: extjs

我有一个gridpanel,其列与其商店相关联(带有“dataIndex”),而列没有与store相关联(没有“dataIndex”),例如:

 {
                xtype: 'gridcolumn',
                renderer: function(value, metaData, record, rowIndex, colIndex, store, view) {
                    var data=record.getData(true);
                    if(data.currProbability!==undefined){
                        if(data.currProbability<5)
                        return 'L';
                        else 
                        if((data.currProbability>4)&&(data.currProbability<7))
                        return 'M';
                        else return 'H';
                    }else 
                    return "";

                },
                text: 'Probability'
            },



{
                xtype: 'gridcolumn',
                renderer: function(value, metaData, record, rowIndex, colIndex, store, view) {
                    var data=record.getData(true);
                    if(data.currSeverity!==undefined){
                        if(data.currSeverity>8)
                        return 'C';
                        else 
                        if((data.currSeverity>6)&&(data.Severity<9))
                        return 'S';
                        else 
                        if((data.currSeverity>4)&&(data.currSeverity<7))
                        return 'M';
                        else 
                        return 'L';
                    }
                    return "";
                },
                text: 'Severity'
            }

对于这两列我对渲染器没有问题但是第三列:

{
                xtype: 'gridcolumn',
                renderer: function(value, metaData, record, rowIndex, colIndex, store, view) {
                    var row=view.getNode(rowIndex);
                    var data=record.getData(true);
                    if(row !==undefined){
                        var severity=Ext.fly(Ext.fly(row).query('.x-grid-cell')[25]).down('div').getHTML();
                        var probability= Ext.fly(Ext.fly(row).query('.x-grid-cell')[24]).down('div').getHTML();
                        if(data.status==='Closed')
                        return severity+probability+'c';
                        else 
                        return severity+probability;
                    }
                    return "";
                },
                text: 'Risk Class'
            }

在其渲染器中使用此列我无法获得后两列的值(“概率”和“严重性”)我理解这个问题,因为我得到的值不是来自记录,而是来自商店中没有关联的两个后续列这里像summury列,在此列'Risk Class'的渲染器中,变量行是未定义的。 请问我如何解决它。

感谢名单。

1 个答案:

答案 0 :(得分:1)

在模型上使用计算字段。

fields: [{
    name: 'severity',
    convert: function(v, record) {
        var severity = record.get('currSeverity');
        if (severity) {
            if (severity > 8) {
                return 'C';
            }
            // etc
        }
        return '';
    }
}]

然后您可以直接在网格中将其用作dataIndex。您也可以向模型询问值:

record.get('severity');