2013-08-01 51 views
1

我對ext-js非常陌生。在ExtJS中使用函數

我有一個容器網格,我需要做的是這樣的:如果一行中的2列之間的差值大於2,那麼這行應該是紅色的。

我不知道該怎麼做。

columns: [ 
              { 
               xtype: 'gridcolumn', 
               dataIndex: 'val_1', 
               text: 'val_1' 
              }, 
              { 
               xtype: 'gridcolumn', 
               dataIndex: 'val_2', 
               text: 'val_2' 
              } 

回答

1

嘗試用這個例子

Ext.onReady(函數(){

VAR店= Ext.create ('Ext.data.ArrayStore',{

fields:[ '價格', '改變'],

數據:[

[0,0],

[2,3],

[0,1],

[2,3],

[5,6],

[0,0]

]

});

var grid = Ext.create('Ext.grid。面板」,{

標題: '陣列網格',

存儲:存儲,

列:[

{文本: '價格',寬度:75,dataIndex: '價格' },

{文本: '更改',寬度:75,dataIndex: '變化'}

],

viewConfig:{

stripeRows: false, 

getRowClass: function(record) { 

    return record.get('price')+record.get('change') > 2 ? 'change-row-color':''; 

    } 

}, 

高度:200,

寬度:200,

renderTo:Ext.getBody()

});

});

CSS:

.change排色.X-網格單元{

背景色:#ffe2e2;

顏色:#900;

}

1

使用getRowClass方法:

覆蓋此函數中 呈現自定義CSS類適用於行。該函數應該返回將被添加到行的包裝div的CSS類名稱(或者爲空 字符串''爲空)。若要 應用多個類名稱,只需在 字符串(例如'my-class another-class')內簡單地返回它們的空格分隔符。用法示例:

viewConfig: { 
    getRowClass: function(record, rowIndex, rowParams, store){ 
     return record.get("valid") ? "row-valid" : "row-error"; 
    } } 
0

您需要使用TemplateColumn中

function getDivForHighlightOnDiff2(x,y,text) { 
    var highlighter = ""; 
    if (Math.abs(x-y) > 2) { 
     highlighter = 'class="shinyRed"'; 
    } 
    return '<div '+highlighter+'>'+text+x+'</div>'; 
} 

highlightOnDiff2Template1= "{[getDivForHighlightOnDiff2(values.val_1, values.val_2,'val_1')]}" 
highlightOnDiff2Template1 = "{[getDivForHighlightOnDiff2(values.val_2, values.val_1,'val_2')]}" 

columns: [ 
{ 
    xtype: 'templatecolumn', 
    tpl: highlightOnDiff2Template1 
}, 
{ 
    xtype: 'templatecolumn', 
    tpl: highlightOnDiff2Template2 
}