1
votes

I have a gridpanel with columns associated to its store (with "dataIndex") and columns not associated to store (without "dataIndex" ) for example:

 {
                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'
            }

for these two columns I haven't problem with renderer But the third column:

{
                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'
            }

with this column in its renderer I can't get the value of two later columns ("probability" and "severity") I understood this problem because I get values not from record but from two later columns not associated in the store here like a summury column, In the renderer for this column 'Risk Class' the variable row is indefined. please how I can resolve it.

Thanx.

1

1 Answers

2
votes

Use a calculated field on your model.

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

Then you can use it as a dataIndex directly in your grid. You can also ask the model for the value:

record.get('severity');