Question

I want my renderer to run only once for each row.

So obviously my renderer should look something like

renderer: function() {

    if (there_is_a_rendered_value_in_view) {
        return rendered_value_in_view;
    }

    return 'generate some return';
}

Is it possible to do?

So how to get rendered_value_in_view?

UPD:

seems like I'm not detailed enough.

Well, the generated value after that is changed outside the grid, so the question is: How to get currently displayed value

Was it helpful?

Solution

You can always add boolean flag, and your rendered_value_in_view to the grid itself. And then in the renderer function check grid property and return it.

Update: from the Sencha docs here are list of parameters your renderer function will get:

value : Object
metaData : Object
record : Ext.data.Model
rowIndex : Number
colIndex : Number
store : Ext.data.Store
view : Ext.view.View

I think the last one will be your grid object.

http://docs.sencha.com/ext-js/4-0/#!/api/Ext.grid.column.Column-cfg-renderer

OTHER TIPS

It'd be fairly difficult to try and capture the rendered value. I think the better way would be to add another model to your field that contains this new value. You can use a convert method so that when the original value changes, the display value can also change.

Maybe -


...
there_is_a_rendered_value_in_view:false,
renderer:function() {

    if (!this.there_is_a_rendered_value_in_view) {
        this.there_is_a_rendered_value_in_view=true;
        return rendered_value_in_view;
    }

    return 'generate some return';
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top