Search code examples
dojotreegrid

Change styling of dojo treegrid cell if value changes


What I have is a treegrid populated with values from ajax. Every 30 seconds the store is refreshed and new data is displayed.

I need to change the styling (color or background-color) of a treegrid cell when it's value differs from the old one. The requirement is to make the comparison and styling from javascript.

Any ideas on how this could be done ?


Solution

  • You could use dijit.Tree's getRowStyle method to modify the style dynamically. It will be called whenever a row needs to be rendered.

    Something like this might get you started:

    (function(){ // closure for private variables
    
    var previousValues = {};
    
    var myTree = ... // lookup dijit.Tree via dijit.byId, or create
    
    myTree.getRowStyle = function(item){
        var style = {};
        var itemId = myTree.store.getIdentity(item);
        var newValue = myTree.store.getValue(item, "MY_ITEM_VALUE");
        if(newValue !== null &&
                previousValues[itemId] !== null &&
                previousValues[itemId] !== newValue) {
            style.backgroundColor = "#0000FF";
            previousValues[itemId] = newValue;
        }
        return style;
    };
    
    })();
    

    There may be better ways to keep track of the previous values, but since your store is getting changed, I really can't think of one.