2011-11-22 22 views
1

我們的目標是將一個cls應用於列,我在getRowClass上做過,然後在1-2秒後將其刪除。 websync每5秒推送一次新數據,所以當這個更改爲單元格出現時,它應該像一個變化的列(單元格)的閃爍,在新數據刷新之前返回到「白色」(默認)?用於比較新記錄的值爲0,但在實際情況下爲上一個值正在進行比較!
這裏是我的代碼:如何將自定義css類應用於extjs網格列,並將其延遲刪除?

Ext.create('Ext.grid.Panel', { 
    columns: [ 
    // ... 
    { 
     header: 'Change', 
     dataIndex: 'change', 
     tdCls: 'x-change-cell' 
    } 
    // ... 
    ], 

    viewConfig: { 
     getRowClass: function (record, index) { 
      var c = record.get('change'); 
      if (c < 0) { 
       return 'price-fall'; 
       // I tried setTimeout("remove-css()",1000); and 
       // Ext.Function.defer(remove-css, 1000); 
       //  but no luck!! 
      } else if (c > 0) { 
       return 'price-rise'; 
      } 
     } 
    } 
    // ... 
});  

CSS:

.price-fall .x-change-cell { 
    background-color: #FFB0C4; 
    color:red; 
} 
.price-rise .x-change-cell { 
    background-color: #B0FFC5; 
    color:green; 
} 

任何想法?

回答

2

嘗試類似的東西:

store.on('add', function() { 
    var els = Ext.select('.price-fall', this.getEl()); 
    els.each(function(el) { 
     el.removeCls('price-fall'); 
    }); 
    els = Ext.select('.price-rise', this.getEl()); 
    els.each(function(el) { 
     el.removeCls('price-rise'); 
    }); 
}, grid, { delay: 2000 }); 

這裏添加事件與2sek延遲發射。

而且我找到了另一種解決方案:

getRowClass: function(rec, index) { 
    if (rec.get('rendered') === undefined) { 
     Ext.Function.defer(function() { 
      this.removeRowCls(index, 'price-fall'); 
      this.removeRowCls(index, 'price-rise'); 
      rec.set('rendered', true); // mark row, in case there repaint occur 
     }, 2000, this); 

     if (rec.get('change') < 0) { 
      return 'price-fall'; 
     } else { 
      return 'price-rise'; 
     } 
    } 
} 
+0

怎麼辦延遲部分,就可以實現這行代碼?如果我在返回後延遲,我得不到結果? –

+0

不確定你的意思是'如果我在返回後延遲,我沒​​有得到任何結果??'。調用return語句後沒有代碼。 (函數(grid){Ext.select('。price-rise',grid.getEl())。each(function(el){el.removeClass('price ');});} .defer(2000,this,[grid]));'。應該在某些事件處理程序中調用此代碼(您可以將其綁定到Ext.data.Store.add事件)。 – Krzysztof

+0

@ Lolo-在第二個解決方案中,rec.get('rendered')代表什麼? –

相關問題